http2: settle pending write callbacks on stream destroy #60191
commit-lint.yml
on: pull_request_target
lint-commit-message
30s
Annotations
1 error
|
lint-commit-message
# 2e34a6fc04467b2427cecc7aa3eba9d08d1e8e71
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 callback that resolves the Writable write 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.',
'',
'Fixes: 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.
|