You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@lpinca ... we don't have to actually land the PR. I want to determine if moving the test would make it less flaky which can be done with a PR and a few stress test runs. The PR doesn't actually have to land. That said, we have to get the CI back to a point where we aren't having to do 10-15 CI runs on a PR just to get it landed. If that means we freeze all development on everything else until CI is green again, let's do that.
I want to determine if moving the test would make it less flaky which can be done with a PR and a few stress test runs. The PR doesn't actually have to land.
Ofc it will, it will not trigger the issue... The stress test CI does not run the test in parallel.
That said, we have to get the CI back to a point where we aren't having to do 10-15 CI runs on a PR just to get it landed.
Let's start by fixing the issues with the macOS machines which is what actually blocked development.
Going through the test-net-write-fully-async-hex-string.js test... I'm able to eliminate timeouts in local testing by reducing the size of the initial buffer allocation. If I keep the allocation under the default high water mark for the stream it appears to never time out. If the buffer passed into the write operation repeatedly is over the high water mark, it times out. The higher the allocation, the more frequently the test times out.
Running some local tests on test-net-write-fully-async-hex-string.js ... here are the results I'm getting locally
Allocation Size
Average Timeouts per 10000 repetitions
Runs
Timeout
65600
8
10
60s
65580
4
10
60s
65570
0
10
60s
65560
0
10
60s
65550
0
10
60s
So far this is the only variable that I've been able to identify that reliably alters the rate of timeout on this particular test.
The reason for choosing 65550 is that it is fairly close (but still over the default high water mark for the stream. Setting the highwatermark to 65600 appears to reduce the rate of timeout when using 65600 as the allocation size.
This makes me think that the tests that are timing out are due to some intersection between v8 GC and streams backpressure management -- I'm unable to reproduce any timeouts for any allocations smaller than the default high water mark size.
@jasnell in my environment the issue seems different, see #52959 (comment).
The server emits 'close', meaning that all data is flushed. It does not seem to be a backpressure issue. Anyway, let's continue the discussion on #52959 so as not to create noise here.
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 240 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.
Activity
aduh95 commentedon Sep 6, 2024
Reproducible locally (macOS ARM), looks like it's a native issue (
CRASHED (Signal: 11)meansSIGSEGV)lpinca commentedon Sep 7, 2024
I get no failures on macOS
avivkeller commentedon Sep 8, 2024
FWIW I can't reproduce on Linux x64:
Maybe it has to do with the amount of memory available?
jasnell commentedon Sep 8, 2024
I think with many of these timeout tests we should consider moving them into the sequential suite to see if that helps
lpinca commentedon Sep 8, 2024
@jasnell no, we will likely end up hiding a real bug. Read the discussions in #52959 and #52964.
jasnell commentedon Sep 8, 2024
@lpinca ... we don't have to actually land the PR. I want to determine if moving the test would make it less flaky which can be done with a PR and a few stress test runs. The PR doesn't actually have to land. That said, we have to get the CI back to a point where we aren't having to do 10-15 CI runs on a PR just to get it landed. If that means we freeze all development on everything else until CI is green again, let's do that.
lpinca commentedon Sep 8, 2024
Ofc it will, it will not trigger the issue... The stress test CI does not run the test in parallel.
Let's start by fixing the issues with the macOS machines which is what actually blocked development.
lpinca commentedon Sep 8, 2024
@jasnell try this
or
I think that if we find the reason why the process sometimes hangs we will be able to fix the timeout issue for many tests.
jasnell commentedon Sep 8, 2024
I can't do anything about the macOS machines right now. I can work on investigating these timeouts, which is what I'm trying to do.
Has that been tested? If so, can you point out where?
jasnell commentedon Sep 8, 2024
Going through the
test-net-write-fully-async-hex-string.jstest... I'm able to eliminate timeouts in local testing by reducing the size of the initial buffer allocation. If I keep the allocation under the default high water mark for the stream it appears to never time out. If the buffer passed into the write operation repeatedly is over the high water mark, it times out. The higher the allocation, the more frequently the test times out.jasnell commentedon Sep 9, 2024
Running some local tests on
test-net-write-fully-async-hex-string.js... here are the results I'm getting locallySo far this is the only variable that I've been able to identify that reliably alters the rate of timeout on this particular test.
The reason for choosing 65550 is that it is fairly close (but still over the default high water mark for the stream. Setting the highwatermark to 65600 appears to reduce the rate of timeout when using 65600 as the allocation size.
This makes me think that the tests that are timing out are due to some intersection between v8 GC and streams backpressure management -- I'm unable to reproduce any timeouts for any allocations smaller than the default high water mark size.
/cc @mcollina @ronag @anonrig for visibility
lpinca commentedon Sep 9, 2024
@jasnell in my environment the issue seems different, see #52959 (comment).
The server emits
'close', meaning that all data is flushed. It does not seem to be a backpressure issue. Anyway, let's continue the discussion on #52959 so as not to create noise here.github-actions commentedon Apr 28, 2026
This issue has been marked as stale due to 210 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.
github-actions commentedon May 29, 2026
This issue has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 240 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.