Repository navigation
fix(browser): restart stopped WebSocket at the end of setConfig - #206
Open
CloudCorpRecords wants to merge 1 commit into
Open
CloudCorpRecords wants to merge 1 commit into
CloudCorpRecords wants to merge 1 commit into
Conversation
If setAuth runs while AuthenticationManager.tryToReauthenticate is waiting on its forced token fetch (after the server sent an AuthError), the superseded reauthentication returns early without restarting the socket, and setConfig's resumeSocket() is a no-op on a stopped socket. The client then reports isWebSocketConnected: false forever: queries stop updating and queued mutations never settle. Call tryRestartSocket() after resumeSocket() at the end of setConfig. WebSocketManager.tryRestart() only acts when the socket is "stopped", so this is a no-op outside the race. This mirrors the existing restart at the end of refetchToken(). Adds a regression test covering both orderings: setConfig while the reauthentication fetch is pending, and setConfig while stopSocket() is still closing. Fixes convex#194. Signed-off-by: Rene Turcios <95189389+CloudCorpRecords@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If setAuth runs while AuthenticationManager.tryToReauthenticate is waiting
on its forced token fetch (after the server sent an AuthError), the
superseded reauthentication returns early without restarting the socket,
and setConfig's resumeSocket() is a no-op on a stopped socket. The client
then reports isWebSocketConnected: false forever: queries stop updating
and queued mutations never settle.
Call tryRestartSocket() after resumeSocket() at the end of setConfig.
WebSocketManager.tryRestart() only acts when the socket is "stopped", so
this is a no-op outside the race. This mirrors the existing restart at the
end of refetchToken().
Adds a regression test covering both orderings: setConfig while the
reauthentication fetch is pending, and setConfig while stopSocket() is
still closing.
Fixes #194.