v0.17.1 - Updated spec runner for replica-set CI
Spec runner fix for GitHub replica-set CI. The production driver is unchanged from v0.17.0.
After v0.17.0, crystal spec with CRYSTAL_WORKERS=2 failed on replica set: extra insert events, extra checkouts, and a missing Unknown on monitor handshake.
Two UTF files (and prose failCommand tests) were overlapping failCommand, killAllSessions, and replSetStepDown on one mongod.
Event lists were not pinned, so a closed client could append into the next test. waitForPrimaryChange returned before the new primary accepted writes. A hello failPoint on the primary does not hit a secondary URI seed.
This release:
- Locks one UTF JSON file at a time (CMAP files and prose
failCommandtests use the same lock) - Pins UTF event lists per client under a mutex
- Waits until the new primary is writable before
waitForPrimaryChangereturns - Arms a hello
failPointon the URI seed only when that appName client does not exist yet
GitHub Docker (CRYSTAL_WORKERS=2), 0 failures:
| Topology | Time | Examples | Pending |
|---|---|---|---|
| standalone | 2:01 | 754 | 14 |
| replica set | 4:32 | 879 | 15 |
| sharded | 6:55 | 868 | 15 |
| load-balanced | 4:03 | 822 | 15 |
Same time band as v0.17.0 / 3.13.3.
Upgrade: applications on 0.17.0 do not need this release unless they run this repo's spec suite. Next work is Phase 3.14 (performance).