fix(server): destroy stream in StreamDispatcher._onDispose#40759
fix(server): destroy stream in StreamDispatcher._onDispose#40759pavelfeldman merged 1 commit intomicrosoft:mainfrom
Conversation
StreamDispatcher does not override _onDispose(), so when the dispatcher hierarchy is torn down on client disconnect, the underlying Readable stream is never destroyed, leaking a file descriptor per open artifact stream. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Test results for "MCP"9 failed 7048 passed, 1068 skipped Merge workflow run. |
Test results for "tests 1"5 flaky41701 passed, 850 skipped Merge workflow run. |
Summary
StreamDispatcherdoes not override_onDispose(), so when the dispatcher hierarchy is torn down (client disconnect, page close), the underlyingReadablestream fromfs.createReadStreamis never destroyed, leaking a file descriptor per open artifact stream._onDispose()for cleanup:TracingDispatcher,PageDispatcher,DebugControllerDispatcher,WebSocketRouteDispatcher.Origin
StreamDispatcherwas introduced in #2733 (2020-06-26). The_onDispose()pattern was established later in #19572 (2022-12-19) by dgozman, which added_onDispose()to page, context, and tracing dispatchers, but missedStreamDispatcher. A subsequent stream fix in #27291 addressed event listener leaks in the same file but not the missing_onDispose().