镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

test-quic-writer-stop-sending is flaky (for me) #63309

Description

@Renegade334

Test

test-quic-writer-stop-sending

Platform

Linux x64

Console output

=== release test-quic-writer-stop-sending ===
Path: parallel/test-quic-writer-stop-sending
node:internal/modules/run_main:107
    triggerUncaughtException(
    ^

AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:

true !== false

    at file:///home/renegade/git/node/test/parallel/test-quic-writer-stop-sending.mjs:54:1 {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: true,
  expected: false,
  operator: 'strictEqual',
  diff: 'simple'
}

Node.js v27.0.0-pre

Build links

$ git rev-parse HEAD
843dc5f0d5ade521552684a161b4f3798e6baa99
$ tail -n1 config.status
exec ./configure --v8-enable-temporal-support --experimental-quic
$ uname -a
Linux venus 6.8.0-111-generic #111-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 11 23:16:02 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
$ g++ -v
gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1)

Additional information

On my system, the timeout of 100ms is insufficient for the stream state to propagate, and this assertion fails ~100% of the time. Extending the timeout arbitrarily to 1000ms appears to settle things.

cc: @nodejs/quic

Activity

  1. added
    flaky-testIssues and PRs involving tests that fail intermittently in CI.
    quicIssues and PRs related to the QUIC transport implementation.
    on May 14, 2026
  2. vishnu97770 commented on May 15, 2026

    @vishnu97770

    Hello @Renegade334

    I’d like to investigate this.

    From the report, it looks like the test currently depends on a fixed 100ms delay for the stream state transition to propagate, which may be too timing-sensitive across different systems/CI environments.

    I’ll inspect test-quic-writer-stop-sending.mjs to understand which async state transition the assertion is waiting on and whether the test can be synchronized on a deterministic event/state change instead of relying on a fixed timeout.

  3. DivyanshuX9 commented on May 26, 2026

    @DivyanshuX9
    Contributor

    Reproducing the Issue

    I can reproduce this failure 100% of the time on Linux x86_64 (Ubuntu 24.04, Node v27.0.0-pre, gcc 13.3.0). The root cause is a race condition the 100ms setTimeout at line 54 is not sufficient for the stream's stop-sending state to propagate through the QUIC layer before the assertion fires.

    Proposed Fix

    Rather than increasing the hardcoded timeout (which is fragile and machine-dependent), I'd suggest replacing the timer-based check with an event-driven approach i.e., listen for the appropriate stream or session event that confirms the stop-sending state has actually been applied, and only assert inside that callback.

    This is more robust because:

    • It doesn't rely on arbitrary timing
    • It won't flake on slow CI machines or under load
    • It follows the pattern used in other QUIC tests

    As a short-term workaround, bumping the timeout to 1000ms appears to stabilize things, but that's a band-aid rather than a real fix.

    Happy to open a PR with the event-driven approach if that direction looks good to the @nodejs/quic team.

  4. github-actions commented on Aug 25, 2026

    @github-actions
    Contributor

    This issue has been marked as stale due to 90 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.

  5. added
    staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.
    on Aug 25, 2026
  6. pimterry commented on Aug 28, 2026

    @pimterry
    Member

    Pretty sure this was caused by #64710, and is now resolved.

    The flaky test itself is gone in any case, and the fixed issue there (stop sending callbacks firing incorrectly, not connected to the inbound network traffic they were intended to track) completely explains the failure to propagate within the timeout. All the replacement tests seem stable to me now. I'm going to close this as fixed.

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

    flaky-testIssues and PRs involving tests that fail intermittently in CI.linuxIssues and PRs related to the Linux platform.quicIssues and PRs related to the QUIC transport implementation.staleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions