Skip to content

v0.15.0 - Roadmap Phase 1

Choose a tag to compare

@paulocoghi paulocoghi released this 19 Aug 23:09
· 28 commits to master since this release

Phase 1 of the roadmap concluded.

This fork of elbywan/cryomongo is now safe enough for baseline work on standalone, replica set, and sharded MongoDB 8.0. GitHub Actions runs all three topologies.

Topology Spec time Result
standalone 12s pass
replica set 2:16 pass
sharded 3:58 pass

pending in the spec log means the test was not run. It is not a green pass of that file.

Added

  • Redact authenticate, saslStart, saslContinue, createUser, updateUser, getnonce, copydb*, and hello with speculativeAuthenticate in APM events and Log.trace.
  • Handshake: backpressure: "2", OS name / architecture / version, platform, optional env metadata. First handshake uses legacy hello when Server API and load-balanced are unset. Client#append_metadata for wrapping libraries.
  • Cursors: #each and block Collection#find close the cursor. Call #close if you iterate with #next. Do not rely on finalize.
  • Backpressure: retry SystemOverloadedError + RetryableError with backoff. URI option maxAdaptiveRetries (default 2).
  • CMAP: pool events and retry of PoolClearedError on retryable reads and writes.
  • Shared server-selection / max-staleness / RTT JSON tests (no mongod).
  • Prose tests: transaction write concern, SDAM RTT, PoolCleared, backpressure, find/getMore.
  • GitHub Actions matrix. Local scripts/mongo-topology.sh.

Fixed

  • URI options after the host with no / (mongodb://localhost:27017?k=v).
  • Standalone retryable reads after closeConnection (Unknown server, then handshake).
  • Mongos pin / unpin. Retry commit after a network error. killAllSessions after each unified test so a leftover sharded transaction does not block the next drop.
  • Session pool close no longer holds the mutex while it sends endSessions (that crashed one sharded CI run with signal 11).

Not in this release

  • Unified pool-cleared-error.json is still skipped.
  • SASLprep for SCRAM-SHA-256.
  • SRV polling, load-balancer socket pin, CSOT, OP_COMPRESSED.
  • Official Change Stream / GridFS / index UTF suites.
  • MONGODB-AWS, MONGODB-OIDC, CSFLE.

Requires Crystal 1.21+ (shard.yml allows >= 1.20.0) and MongoDB 8.0. Wire version 25. BSON: alumna/bson.cr 0.8.1.

See CHANGELOG.md and ROADMAP.md.