Skip to content

Conversation

@ganemone
Copy link

@ganemone ganemone commented Feb 19, 2021

Currently there is an issue where errors streaming requests can put the http2 session into a broken state, causing all future requests to timeout. fixes #1490

@linux-foundation-easycla
Copy link

linux-foundation-easycla bot commented Feb 19, 2021

CLA Signed

The committers are authorized under a signed CLA.

@ganemone
Copy link
Author

It appears this only fixes the issue for node versions < 14.... With node 14 it seems to get caught in an infinite loop somewhere

@pedramphp
Copy link

Hi Team,

To give more context to the problem, the issue occurs when a client-streaming connection is destroyed by the gRPC server over a proxy.

Once http2 session is destroyed by the server, the session in the client transitions to a broken and unusable state. Therefore, all consecutive requests (Unary or Stream) to the server fails, as a result the Node.js app becomes unusable and we would need to restart the Node.js server to get the app functioning normally again.

The expected behavior is that the gRPC client, detects http2 connection failure, logs it and creates a new http2 session for upcoming requests.

I would strongly suggest to prioritize the issue, and work on a fix immediately.

Optionally, we can try to develop a sample demo page, so it can help to reproduce the issue, but looking at the code and the above PR, you can obviously detect the issues.

@murgatroid99
Copy link
Member

We can't accept this PR. I don't think any of the changes here are correct in terms of gRPC protocol behavior, and I don't understand how they would solve any problems.

Please provide the requested information and anything else that could help debug this problem on the linked issue.

@ganemone
Copy link
Author

Yea after seeing this doesn't fix the issue for node14 I understand not accepting it. Hopefully it can still be useful for future debugging as we try to find the root cause. Could be useful for others as a short term fix applied as a patch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Using client after dropped connection leads to freezing of the whole NodeJs Process

3 participants