fix: Client.Ready() blocks forever when called after client is already ready #204
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.
About the changes
Client.Ready() no longer exposes the internal one-shot
uc.ready
channel. It now returns a fresh channel per call that resolves by waiting onuc.onReady
(a close-only broadcast). This ensuresReady()
delivers even when called after the client has already become ready.WaitForReady()
and listener callbacksCloses #203
Important files
client.go
— change toReady()
to useuc.onReady
and per-call channel.client_test.go
— tests for initial and post-ready calls with timeouts.Discussion points
uc.ready
more than once. Closing uc.onReady once makes duplicate sources harmless, but confirm this is the intended single “ready” moment across modes.