http2: settle pending write callbacks on stream destroy #60189
commit-lint.yml
on: pull_request_target
lint-commit-message
37s
Annotations
1 error
|
lint-commit-message
# 47203885d523db7cb4727c51d07a58b608c63764
ok 1 assisted-by-is-trailer: Assisted-by is a trailer
ok 2 co-authored-by-is-trailer: no Co-authored-by metadata
ok 3 fixes-url: skipping fixes-url # SKIP
ok 4 line-after-title: blank line after title
not ok 5 line-length: Line should be <= 72 columns.
---
{
found: 73,
compare: '<=',
wanted: 72,
at: {
line: 7,
column: 72,
body: [
'',
'When an HTTP/2 stream is destroyed while a write is still in flight,',
'nghttp2 may have already handed the data off to the socket and never',
"report the write's completion once the stream or session tears down. In",
'that case the native completion callback that resolves the Writable write',
'(stream[kState].writeCb) is never invoked, so the Writable stays stuck',
'and the event loop never drains, causing test-http2-close-while-writing',
'to time out on macOS.',
'',
'In Http2Stream._destroy, settle any write that is still in flight by',
'invoking its callback with the destroy error and resetting writePending.',
'A later native completion callback is then a no-op because writeCb is',
'null and writePending is 0, so the settle is idempotent. Passing the',
'error (rather than null) also drains any buffered writes.',
'',
'Refs: https://github.com/nodejs/node/issues/58252',
'',
'Signed-off-by: Matteo Collina <hello@matteocollina.com>',
'Assisted-by: pi-coding-agent'
]
}
}
...
ok 6 signed-off-by: has valid Signed-off-by
ok 7 subsystem: valid subsystems [http2]
ok 8 title-format: Title is formatted correctly.
0..8
# tests 8
# pass 6
# fail 1
# Please review the commit message guidelines:
# https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines
npm warn deprecated tap@16.3.10: Versions of tap before v18 are no longer maintained. Please upgrade.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated libtap@1.4.1: This library is no longer used by node-tap, and is unmaintained.
npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
|