Skip to content

v0.17.1 - Updated spec runner for replica-set CI

Choose a tag to compare

@paulocoghi paulocoghi released this 25 Aug 11:46
· 4 commits to master since this release

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 failCommand tests use the same lock)
  • Pins UTF event lists per client under a mutex
  • Waits until the new primary is writable before waitForPrimaryChange returns
  • Arms a hello failPoint on 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).