ExportXMLWordPrintableJSON

    • Type: Build Failure
    • Resolution: Done
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: SDAM, Tests
    • None
    • Hide

      DRIVERS-3593:
      Summary of necessary driver changes

      • Drivers that skipped tests due to SERVER-128157 (min of 10s) can unskip tests once binaries are available of backports of SERVER-132246 (min of 500ms).
      Show
      DRIVERS-3593: Summary of necessary driver changes Drivers that skipped tests due to SERVER-128157 (min of 10s) can unskip tests once binaries are available of backports of SERVER-132246 (min of 500ms).
    • None
    • Ruby Drivers
    • Not Needed
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • 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:
            Dmitry Rybakov
            Reporter:
            Dmitry Rybakov
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: