interruptInUse-pool-clear tests fail on server 7.0.39+/8.0.28+ due to SERVER-128517 pre-auth streamable hello floor

XMLWordPrintableJSON

    • Type: Build Failure
    • Resolution: Unresolved
    • Priority: Unknown
    • None
    • Affects Version/s: None
    • Component/s: SDAM, Tests
    • None
    • None
    • Ruby Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      Summary

      The three sdam_unified/interruptInUse-pool-clear.yml tests started failing on master CI (master was green on 2026-07-22, red on 2026-07-24) with no driver change. The failure is caused by a MongoDB server change, SERVER-128517 "Add configurable minimum timeout for pre-auth streamable hello", not by the driver.

      Failing tests:

      • Connection pool clear uses interruptInUseConnections=true after monitor timeout
      • Error returned from connection pool clear with interruptInUseConnections=true is retryable
      • Error returned from connection pool clear with interruptInUseConnections=true is retryable for write

      Root cause

      SERVER-128517 introduces the server parameter minWaitForStreamingHelloMillis (default 10000 ms), which floors the wait time for pre-auth streamable hello commands to mitigate an unauthenticated resource-exhaustion loop. The monitor's streamable hello is pre-auth, so it is now held for up to 10 s.

      The interruptInUse-pool-clear scenario relies on the monitor detecting the failpoint-induced failure and clearing the pool with interruptInUseConnections=true quickly. With the 10 s floor, the monitor no longer reacts in time, so the in-use operation hits its own ~5 s socket read timeout (Mongo::Error::SocketTimeoutError, Errno::ETIMEDOUT) before the interrupt-driven pool clear fires. The expected prompt retryable error and pool-clear events never occur.

      Scope / evidence

      • Fails only on topology = replica-set AND server version >= 7.0. Sharded passes; standalone skips (runOnRequirements [replicaset, sharded]); replica-set on 4.4/5.0/6.0 passes.
      • Matches SERVER-128517 fix versions exactly: 7.0.39, 8.0.28, 8.2.12, 8.3.7 (rapid), 9.0.0-rc1 (not backported to 6.0).
      • Local bisect on a replica set: 8.0.4 PASS, 8.0.26 PASS, 8.0.28 FAIL.
      • Not a driver regression: reproduces on driver code from before the recent SDAM commits (RUBY-3909/#3076, RUBY-3822/#3069), back to 2026-06-26.

      Reproduce (needs a 7.0.39+/8.0.28+ replica set):

      MONGODB_URI="mongodb://localhost:27017,localhost:27018,localhost:27019/" \
        bundle exec rspec spec/spec_tests/sdam_unified_spec.rb -e "interruptInUseConnections"
      

      Action taken

      The three tests are skipped via skipReason in spec/spec_tests/data/sdam_unified/interruptInUse-pool-clear.yml, referencing this ticket, to unblock master.

      Follow-up

      Determine the correct long-term fix: set minWaitForStreamingHelloMillis: 0 via setParameter at server start in the test environment (likely drivers-evergreen-tools, applied conditionally since the parameter does not exist before the fix versions), and/or update the upstream spec fixture. This affects all drivers' SDAM interruptInUse tests, so coordinate with the spec/DRIVERS team.

            Assignee:
            Unassigned
            Reporter:
            Dmitry Rybakov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: