fix subscription example in documentation #2677
Merged
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.
Describe your PR and link to any relevant issues.
This PR is to update the documentation on how to implement subscription resolvers. Doc is slightly ambiguous.
Referring to this doc: https://github.com/99designs/gqlgen/blob/master/docs/content/recipes/subscriptions.md
When writing to channel in a select case,
case ch <- t:
the write can block if the consumer is not reading. Can happen during high loads or even randomly.
In such case, the go routine goes to default and exits for no reason.
It should exit when context is cancelled/subscription is closed.
Also documentation is a bit misleading about .
I stumbled upon this when my PR got reviewed and I was asked to write the resolver like how it's written in the example. Writing with with
case <-ctx.Done()
works fine in our system.Using
default
case really doesn't do much harm here, since usually clients consuming subscriptions have a retry. Hence the problem also goes unnoticed.I have: