Skip to content
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

Investigate Netty stream closure handling logic #536

Closed
nmittler opened this issue Jun 12, 2015 · 1 comment
Closed

Investigate Netty stream closure handling logic #536

nmittler opened this issue Jun 12, 2015 · 1 comment
Assignees

Comments

@nmittler
Copy link
Member

In the Netty handlers, we seem to have various ways that we can detect stream and handle stream closure. We should try to simplify this logic so that it's less error prone.

@nmittler nmittler self-assigned this Jun 12, 2015
nmittler pushed a commit to nmittler/grpc-java that referenced this issue Jun 16, 2015
- AbstractClientStream
-- Properly set the inboundPhase after receiving trailers. This is needed to allow the generic onStreamClosed() handler properly report the status for the closed stream.

- BufferingHttp2ConnectionEncoder
-- Moved exceptions to inner classes.
-- All new headers fail with new exception type after encoder has been closed.

- NettyClientHandler
-- Closing the buffering encoder when the channel goes inactive in order to explicitly clear out any pending streams.
-- Handling onStreamClosed() event to ensure that we always report status for closed streams.
-- Added handling for stream exhaustion.  Immediately fail new streams with a reasonable error.
-- Using a second promise in createStream() to ensure that the completion handler in this method runs before the handler in the transport.

Fixes grpc#536
nmittler pushed a commit to nmittler/grpc-java that referenced this issue Jun 16, 2015
- AbstractClientStream
-- Properly set the inboundPhase after receiving trailers. This is needed to allow the generic onStreamClosed() handler properly report the status for the closed stream.

- BufferingHttp2ConnectionEncoder
-- Moved exceptions to inner classes.
-- All new headers fail with new exception type after encoder has been closed.

- NettyClientHandler
-- Closing the buffering encoder when the channel goes inactive in order to explicitly clear out any pending streams.
-- Handling onStreamClosed() event to ensure that we always report status for closed streams.
-- Added handling for stream exhaustion.  Immediately fail new streams with a reasonable error.
-- Using a second promise in createStream() to ensure that the completion handler in this method runs before the handler in the transport.

Fixes grpc#536
nmittler pushed a commit to nmittler/grpc-java that referenced this issue Jun 16, 2015
- AbstractClientStream
-- Properly set the inboundPhase after receiving trailers. This is needed to allow the generic onStreamClosed() handler properly report the status for the closed stream.

- BufferingHttp2ConnectionEncoder
-- Moved exceptions to inner classes.
-- All new headers fail with new exception type after encoder has been closed.

- NettyClientHandler
-- Closing the buffering encoder when the channel goes inactive in order to explicitly clear out any pending streams.
-- Handling onStreamClosed() event to ensure that we always report status for closed streams.
-- Added handling for stream exhaustion.  Immediately fail new streams with a reasonable error.
-- Using a second promise in createStream() to ensure that the completion handler in this method runs before the handler in the transport.

Fixes grpc#536
@nmittler
Copy link
Member Author

nmittler commented Jul 8, 2015

At this point, this issue is essentially a dup of #605. Closing this.

@nmittler nmittler closed this as completed Jul 8, 2015
@lock lock bot locked as resolved and limited conversation to collaborators Sep 23, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant