-
Notifications
You must be signed in to change notification settings - Fork 10.4k
[blazor] fix multiple calls to OnConnectionDownAsync #62518
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[blazor] fix multiple calls to OnConnectionDownAsync #62518
Conversation
if (this.Client.Connected) | ||
{ | ||
await OnConnectionDownAsync(CancellationToken.None); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is the right change to fix the metric issue. It's changing an existing behavior of the system that users might be relying on.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this event is called twice. That's a bug not a feature
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is causing the 2nd call?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@javiercn does this make sense or you have another proposal for the fix ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it makes sense, but I think it might not be potentially right to just check Client.Connected
.
I might be wrong, but I suspect there are two paths that we care about.
- Hub.OnDisconnect which I imagine calls client.SetDisconnected and then eventually calls dispose?
- The other one is when we terminate the circuit (client navigates away or closes the tab) gracefully.
So, I think that if we check on this, we run the risk of not running the handlers during termination. We might need to mark the host as terminating or something similar to differentiate between the two cases and choose when to run the handlers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just tested the "close tab" and "navigate to non-interactive page". Both behave as expected, that is, they call the event once.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Terminate it's not being fired in those cases.
- Close tab will likely don't cause
unload
to fire. navigate to non-interactive page
- It takes a bit of time for the client to start the circuit disposal.
- If for some reason it's not happening, it's also a bug.
If we check for the circuit to be connected it won't fire when we want to eagerly terminate the circuit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we need to call that event from places that call circuitHost.Client.SetDisconnected()
rather than relying that circuitHost.DisposeAsync()
would always call it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also I'm not sure that the new PauseAndDisposeCircuitHost
is calling SetDisconnected()
CircuitHost.OnConnectionDownAsync()
fromCircuitHost.DisposeAsync()
if it's not connected_circuitConnectedCounter.Add
fromCircuitMetrics.OnCircuitDown
Fixes #62219