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-128517fix 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.
- depends on
-
SERVER-128517 Add configurable minimum timeout for pre-auth streamable hello
-
- Closed
-