Fix hanging on stream response errors #2599
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.
/claim #2584
The reported behaviour was due to the channel not being closed when the stream errored. There are 2 ways that we can recover from such issues without causing clients to hang:
With both approaches, what the client receives is the same response. Note that we cannot change the initial 200 OK response that was sent to the client.
Alternative approach (requires user-facing breaking changes)
We could potentially change the
Body.fromStream
/Body.fromStreamX
methods to force users to handle streaming errors (i.e.,ZStream[R, Nothing, A]
) and in cases of defects, leave it up to Netty to handle them. This would very likely require changes to users' code, but this option is less likely to result to unexpected behaviour due to ZStream failures