Skip to content

NodeJs 12.11.1 NGHTTP2_ENHANCE_YOUR_CALM  #29907

Description

@crystalin
  • Version: 12.11.1
  • Platform: Docker 12.11-alpine (on Ubuntu)

This is a regression (or a feature?) compared to 12.7

When performing a consequent amount of request on an http2 connection, using 12.11 I reach this error:
Error [ERR_HTTP2_STREAM_ERROR]: Stream closed with error code NGHTTP2_ENHANCE_YOUR_CALM at ClientHttp2Stream._destroy (internal/http2/core.js:2098:13) at ClientHttp2Stream.destroy (internal/streams/destroy.js:37:8) at ClientHttp2Stream.[kMaybeDestroy] (internal/http2/core.js:2114:12) at Http2Stream.onStreamClose (internal/http2/core.js:491:26)

This doesn't happen on 12.7 under the same condition with the same code.
This happens when the amount of concurrent stream is almost at the limit agreed between the 2 peers (128 in my case).
This happens when the amount of request is high but the number of concurrent stream is lower than the limit (~10 concurrent stream, with a limit of 128)

I believe this was handled correctly in 12.7 by keeping the request in the queue, but in 12.11 it seems to push it over the limit and the peer returns the NGHTTP2_ENHANCE_YOUR_CALM error.

Activity

  1. crystalin commented on Oct 9, 2019

    @crystalin
    Author

    After more investigation. It is not related to reaching a high amount of concurrent stream. I found traces happening with sessions having only up to 10 concurrent streams

  2. bnoordhuis commented on Oct 9, 2019

    @bnoordhuis
    Member

    Related (or identical) to #29223 by any chance?

  3. added
    http2Issues and PRs related to the http2 subsystem.
    on Oct 9, 2019
  4. crystalin commented on Oct 9, 2019

    @crystalin
    Author

    I thought it was not related initially, but re-reading it again, it might be the buffer limit is actually limiting. However it was handled correctly in 12.7, so I think it is a regression implement in the recent patches

  5. lundibundi commented on Jan 30, 2020

    @lundibundi
    Member

    The 12.7 doesn't include the commit that supposedly introduced the bug (#29122 which was released in 12.8.1) while 12.11 has it, could you update to the latest v12 and check if the problem still persists?
    Closing for now as this is very similar to the other reported errors related to NGHTTP2_ENHANCE_YOUR_CALM, feel free to reopen.

    Should be fixed in all release lines since 13.3.0, 12.14.1 and 10.18.1 via #30684.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    http2Issues and PRs related to the http2 subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions