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

Long request data frames can cause streams to hang #1704

Open
1 of 2 tasks
hawkw opened this issue Nov 16, 2017 · 1 comment
Open
1 of 2 tasks

Long request data frames can cause streams to hang #1704

hawkw opened this issue Nov 16, 2017 · 1 comment
Assignees
Labels

Comments

@hawkw
Copy link
Member

hawkw commented Nov 16, 2017

Issue Type:

  • Bug report
  • Feature request

What happened:

Currently, HTTP/2 requests which send data frames longer than (WINDOW_SIZE - RESPONSE_CLASSIFIER_BUFFER_SIZE) can prevent Linkerd from discarding the buffer and releasing window capacity, which causes streams to hang. This is the root cause of issues #1697 and #1605. In #1701, we've changed the default response classifier buffer size from 65kb to 8kb, which prevents this from happening in a majority of cases, but it will still be possible to generate frames which cause streams to hang.

What you expected to happen:

Linkerd should not hang on receipt of any valid request frame, regardless of size, as long as that frame's sender obeys flow control.

Anything else we need to know?:

Although #1701 will fix this in a majority of cases, we should ideally not allow this issue to occur at all. We might want to consider having the response classifier adjust the buffer size based on the current size of the flow control window or discard the request buffer if the request does not complete within a short timeout.

@dtacalau
Copy link
Contributor

@adleong Please assign this issue to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants