MongoDB Upgrade Paths
Parent: MongoDB Expert Knowledge · Published reference · snapshot 2026-09-08 · skill mongodb-operations-expert/references/mongodb-upgrade-paths.md
↓ Facts as markdownall context files
Operational reference for MongoDB major-version upgrades on self-managed deployments. Covers the supported version sequence, Feature Compatibility Version (FCV) lifecycle, rolling replica-set and shar
These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
MongoDB Upgrade Paths
- Operational reference for MongoDB major-version upgrades on self-managed deployments. Covers the supported version sequence, Feature Compatibility Version (FCV) lifecycle, rolling replica-set and sharded-cluster procedures, driver matrices, pre-/post-upgrade verification, and the common failure modes that show up in real customer upgrades. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#mongodb-upgrade-paths]
- Active customer context (2026): Goldman Sachs "Cookie" 7.0 → 8.0 and Straight-to-8 self-managed initiatives. Both rely on every section below being correct. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#mongodb-upgrade-paths]
When to use this skill
- Planning, scoping, or sequencing any MongoDB major-version upgrade (especially 7.0 → 8.0 or multi-hop from 4.4 / 5.0 / 6.0). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
- Drafting or reviewing an upgrade runbook, change ticket, or maintenance-window plan. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
- Designing the FCV pin / unpin schedule and the binary-downgrade rollback window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
- Diagnosing an upgrade-related incident (driver mismatch, FCV refusal, mongos skew, cold-cache regression, PSA stepdown failure). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
- Coaching a customer DBA team through their first 8.0 rollout. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
- Producing post-event sign-off artefacts (Error Envelope, metric snapshots, customer sign-off). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-to-use-this-skill]
When NOT to use this skill
- Atlas-managed upgrades driven entirely through the Atlas UI - point at mongodb-atlas-expert references/mongodb-atlas-managed-upgrades.md instead (this skill covers Atlas-specific FCV pin behaviour but not the auto-upgrade cadence, maintenance windows, or 7.0->8.0 Atlas-only gotchas covered there). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-not-to-use-this-skill]
- Patch-revision upgrades within a major (e.g., 8.0.3 → 8.0.10) when no FCV change is needed - the procedure is the same rolling pattern minus FCV, and is documented inline only as a reference. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-not-to-use-this-skill]
- Driver-internal questions unrelated to server upgrades - point at the driver-specific skill (mongodb-drivers-k8s, etc.). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-not-to-use-this-skill]
- Schema migration or aggregation changes - use mongodb-migration-patterns or mongodb-aggregation-pipeline. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-not-to-use-this-skill]
- Backup / restore design - use mongodb-backup-restore. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#when-not-to-use-this-skill]
Related skills
- mongodb-7.0-vs-8.0-differences (this hub) - what actually changed technically between 7.0 and 8.0 (engine internals, new APIs, deprecations, default-value changes, performance benchmarks) - the behavior-risk counterpart to this file's procedure; read it for pre-upgrade what will be different risk assessment. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- mongodb-atlas-expert - Atlas UI flows, Atlas-managed FCV pin window, Atlas-only safety rails. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- mongodb-replication - replica-set internals, election theory, write-concern semantics that this skill assumes. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- mongodb-sharding - sharded-cluster topology, config-shard vs dedicated-config-server, balancer internals. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- mongodb-backup-restore - backup verification expected by Section 6 pre-upgrade checks. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- mongodb-performance-troubleshooting - root-causing the cold-cache regression in Section 8. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- atlas-diagnostics-expert - diagnostics package collection during upgrade incidents. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
- incident-response - severity / IC handling if an upgrade goes wrong. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#related-skills]
1. Version upgrade paths
- MongoDB enforces strictly sequential major-version upgrades. You cannot skip a major release on a single cluster. The supported sequence today is: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#1-version-upgrade-paths]
- Each arrow above is one full upgrade cycle: bump binaries → wait for cluster to stabilize → set FCV → only then start the next hop. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#1-version-upgrade-paths]
Hard rules
- To upgrade to 8.0, every member must already be on a 7.0 binary with featureCompatibilityVersion: "7.0". [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#hard-rules]
- To upgrade to 7.0, every member must be on 6.0 with FCV "6.0". [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#hard-rules]
- The same chain holds for 5.0 ← 4.4. You cannot jump 5.0 → 7.0 or 6.0 → 8.0. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#hard-rules]
- Patch-level (revision) upgrades within a major (e.g., 8.0.3 → 8.0.10) are unrestricted and use the same rolling pattern but never require FCV changes. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#hard-rules]
"Straight-to-8" jump pattern
- "Straight-to-8" is a customer-facing label for rapid sequential upgrades on the same cluster, not a literal skip. The pattern compresses the 4.4 → 8.0 ladder into a small number of well-rehearsed maintenance windows by: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#straight-to-8-jump-pattern]
- Doing back-to-back binary-only upgrades through 5.0, 6.0, 7.0 with the FCV held at the source version for each hop (so each hop remains downgrade-eligible until validation). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#straight-to-8-jump-pattern]
- Validating workload + drivers between hops, but deferring setFeatureCompatibilityVersion until the cluster is sitting on the 8.0 binary set with all health and driver tests passing. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#straight-to-8-jump-pattern]
- Pinning FCV to "7.0" before the 7.0 → 8.0 hop so you retain a full 4-week binary-downgrade window from 8.0 back to 7.0 if 8.0 misbehaves under production load. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#straight-to-8-jump-pattern]
- Straight-to-8 is not a documented MongoDB product feature - it is an operational rollout pattern. The supported upgrade matrix is unchanged: 4.4 → 5.0 → 6.0 → 7.0 → 8.0. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#straight-to-8-jump-pattern]
Pre-flight: identify your starting version honestly
- If FCV lags binary by more than one major version (e.g., binary 7.0 with FCV "5.0"), stop. You must walk FCV forward one hop at a time before any further binary change. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-flight-identify-your-starting-version-honestly]
2. Feature Compatibility Version (FCV)
- FCV is the gate between binary upgrade and feature activation. It exists so customers can roll new binaries first, verify stability, then opt into the new on-disk and protocol features once they are confident no downgrade is needed. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#2-feature-compatibility-version-fcv]
Key facts
- FCV is separate from binary version. db.version() returns the binary; featureCompatibilityVersion is its own admin parameter. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#key-facts]
- After upgrading every node's binary to N, the FCV remains "N-1" until you explicitly run setFeatureCompatibilityVersion. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#key-facts]
- New backwards-incompatible features (queryable encryption range queries, new index types, resharding of time-series in 8.0.10+, etc.) stay disabled while FCV is on the older value. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#key-facts]
- setFeatureCompatibilityVersion requires confirm: true starting in 7.0 and remains required in 8.0: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#key-facts]
- Downgrade requires the inverse: FCV must be moved back first, then binaries. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#key-facts]
Downgrade preservation window
- Once binaries are at N and FCV is still "N-1", you can binary-downgrade to N-1 safely. This is the "preservation window". [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#downgrade-preservation-window]
- Self-managed: the preservation window is open as long as you keep FCV pinned and no backward-incompatible features have been used. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#downgrade-preservation-window]
- Atlas-managed: FCV pinning is bounded to a 4-week window from the pin date. Atlas auto-unpins on the next maintenance window after expiry; once unpinned, FCV is auto-upgraded to match the binary and the rollback path closes (this is the Atlas "Point of No Return"). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#downgrade-preservation-window]
- Self-managed customers should mirror the 4-week discipline as a policy even though no automation enforces it - long-pinned FCV blocks feature adoption and leaves the cluster perpetually "half-upgraded." [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#downgrade-preservation-window]
Burn-in recommendation
- After binary upgrade, run without advancing FCV for a deliberate burn-in (1–4 weeks is typical). Only set FCV to the new value when: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#burn-in-recommendation]
- Driver upgrades have been deployed and steady-state for 7+ days. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#burn-in-recommendation]
- No production incidents traced to the new binary. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#burn-in-recommendation]
- Backup verification on the new binaries succeeded. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#burn-in-recommendation]
- The application owner has explicitly signed off on irreversibility. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#burn-in-recommendation]
3. Rolling upgrades — replica sets
- The rolling upgrade contract: at any moment, the replica set retains a writable primary and a majority of voters. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#3-rolling-upgrades-replica-sets]
Order
- Secondaries, one at a time. Shut down mongod, swap the binary, restart. Wait for the node to return to SECONDARY (it may transit STARTUP2 or RECOVERING first - this is normal). Do not start the next node until rs.status() shows the current one back in SECONDARY. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order]
- Arbiters (if any). Arbiters are stateless and have priority 0 by default. Upgrade them at any point after the secondaries but before the primary. Treat them like a tiny secondary: stop, swap, start, confirm ARBITER state. Do not make the arbiter the last node - its election votes matter when the primary steps down. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order]
- Primary, last. Connect mongosh to the primary and run: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order]
Election timing
- Median election time with default settings is ~10–12 seconds. Plan for a brief write outage when the primary steps down. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#election-timing]
- Election priority is configurable per node via members[n].priority. Setting your preferred upgrade-last node to high priority before stepDown gives you a predictable post-upgrade primary. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#election-timing]
- electionTimeoutMillis (default 10s) controls how long secondaries wait before calling an election. Some customers lower this in pre-upgrade maintenance windows to 5000ms to compress outage, then revert post-upgrade. Document and review with the customer - it changes failover semantics in production. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#election-timing]
Arbiter handling
- Arbiters cannot become primary and hold no data, so they do not require FCV considerations on upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#arbiter-handling]
- Three-node replica sets with one arbiter (PSA topology) are the most fragile during rolling upgrades because losing the data secondary while the primary is stepping down leaves no eligible primary. Recommend customers move arbiters off PSA topologies before any major upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#arbiter-handling]
4. Sharded cluster upgrades
- Sharded clusters have three component classes - config servers, shards, mongos - and the upgrade ordering is strict. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#4-sharded-cluster-upgrades]
Order (8.0 example, applies to every major hop)
- Pre-step 0 - Disable the balancer before any binary change: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
- Then walk the tiers in this strict order: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
- Config server replica set (CSRS). Apply the rolling replica-set procedure (Section 3) to the config servers. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
- Shards next. For each shard (replica set), repeat the rolling procedure. Upgrade least-critical shards first if possible - most v8 sharded upgrade incidents originate in the shard phase, and walking from least to most critical limits blast radius. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
- mongos routers last. mongos is stateless, so you can drain connections and restart them in parallel groups. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
- Post-step - Re-enable balancer, then set FCV only after all three tiers are upgraded and stable: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#order-80-example-applies-to-every-major-hop]
Version-skew rules
- A mongos running version M can only talk to mongods with FCV ≤ M. Concretely: a 7.0 mongos cannot connect to a sharded cluster whose FCV has been advanced to "8.0". It can connect to an 8.0 cluster that is still pinned at FCV "7.0". [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#version-skew-rules]
- Mixed-version mongos pools are tolerated during the upgrade window but should not be left in production beyond the maintenance event. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#version-skew-rules]
- Config servers must be on the same or newer version as the shards. Never let a shard run a newer binary than its config server. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#version-skew-rules]
Config shard caveat (8.0+)
- If your cluster uses the config shard topology (config server doubling as a data shard, introduced in 7.0), you must run transitionToDedicatedConfigServer before downgrading FCV below 8.0. There is no equivalent path forward - this is a downgrade-only gate. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#config-shard-caveat-80]
5. Driver compatibility
- A driver mismatch is the most common day-1 production incident after a server upgrade. The driver must support the target server version before binaries change. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#5-driver-compatibility]
Retry semantics
- retryWrites=true is default on 4.2+ drivers; do not disable it for upgrade convenience. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#retry-semantics]
- retryReads=true is default on 4.0+ drivers. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#retry-semantics]
- During a primary stepdown, an in-flight write with retryWrites=true is automatically retried against the new primary once the driver's server selection timeout (default 30s) discovers the new topology. This is why a clean rs.stepDown() is preferable to kill -9 - kill-9 invalidates connection state in ways that break some retry paths. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#retry-semantics]
- For 5.x Java drivers, MongoClientSettings exposes finer-grained serverApi and serverSelectionTimeout. Default is fine for upgrades. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#retry-semantics]
Other drivers — quick rules
- Node.js: driver 6.x supports MongoDB 8.0. Driver 5.x maxes at 7.0. Always confirm against mongodb package peerDependencies vs the connected server. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#other-drivers-quick-rules]
- Python (PyMongo): 4.7+ for 7.0, 4.9+ for 8.0. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#other-drivers-quick-rules]
- C# / .NET: 2.28+ for 7.0, 3.0+ for 8.0. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#other-drivers-quick-rules]
- Go: 1.13+ for 7.0, 1.17+ for 8.0. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#other-drivers-quick-rules]
6. Pre-upgrade checks
- Run these checks before touching binaries. Missing any one of them is how upgrades fail in the middle of the maintenance window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#6-pre-upgrade-checks]
Required gates
- All nodes on the prerequisite version, FCV matches: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- No in-flight index builds: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- An interrupted index build leaves the collection in unfinished state. Either let the build complete or dropIndex and restart it after the upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Change-stream consumers are resumable: confirm every consumer is storing _id (resume token) durably so it can resume past the maintenance window. If oplog rolls beyond the last-seen token during upgrade, the consumer must do a full reseed - surface this risk to the customer in writing. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Oplog window comfortably exceeds expected maintenance duration: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Aim for ≥ 4× the expected maintenance window (e.g., 4-hour oplog for a 1-hour upgrade). If short, raise oplog size before upgrade with replSetResizeOplog. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Backup verified, not just taken. Restore the latest snapshot into a scratch cluster and run a smoke query. Untested backups are not backups. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Driver compatibility deployed. Drivers should be on the target-server-compatible version for at least 7 days before the upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Replica lag < 5 seconds on every secondary: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Disk free space: at minimum 25% headroom. WiredTiger needs room for the new on-disk format files even when FCV is held. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
- Compatibility scan: review the target version's "Compatibility Changes" doc and grep the application for any removed/deprecated command names (e.g., $listLocalSessions semantics, geoNear aggregation pipeline equivalents). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#required-gates]
Index builds and commit quorum (8.0 nuance)
- Starting in MongoDB 8.0, the commit quorum specifies how many nodes must be ready to finish the index build before the primary commits, while the write concern specifies how many nodes must replicate the commit oplog entry before the command returns success. This is a semantic change vs. 7.0 and earlier. If your application sets commitQuorum explicitly, audit those calls. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#index-builds-and-commit-quorum-80-nuance]
- Default commitQuorum is votingMembers (all voting data-bearing members). Lowering it (e.g., majority) can prevent index builds from stalling on a lagging secondary during the upgrade window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#index-builds-and-commit-quorum-80-nuance]
Binary downgrade window
- The rollback path depends entirely on whether FCV was pinned before the upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#binary-downgrade-window]
The "Point of No Return" command
- setFeatureCompatibilityVersion with the new version is the Point of No Return for the rollback window. Once executed and confirmed, the FCV gate closes: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#the-point-of-no-return-command]
- On Atlas, the 4-week pin window starts at FCV pin time. After expiry, Atlas auto-advances FCV at the next maintenance window - explicit and visible in the Atlas UI. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#the-point-of-no-return-command]
- On self-managed, there is no automation. Operator discipline is the only enforcement. Add the burn-in calendar reminder to your runbook. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#the-point-of-no-return-command]
Practical rollback playbook
- Detect regression (latency, error rate, missing feature support in application). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- Confirm FCV state. If FCV is still "N-1": [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- Apply rolling binary downgrade in reverse order: primary last for replica sets; mongos → shards → config servers for sharded clusters. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- If FCV has been advanced: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- Audit for use of new-version-only features. Atlas indexes that depend on new operators, new index types, sharded time-series with reshardCollection, etc. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- If clean, run setFeatureCompatibilityVersion: "N-1", confirm: true. If features are in use, open a Premium Support case before touching anything. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
- Document the rollback as a near-miss event regardless of whether downgrade succeeded. The data is the most valuable input for the next upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#practical-rollback-playbook]
8. Disk pre-warming (Cookie 7.0 → 8.0 lesson)
- Status: known operational gap, manual SOP, not documented in upstream MongoDB upgrade procedures. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#8-disk-pre-warming-cookie-70-80-lesson]
The problem
- Goldman Sachs "Cookie" cluster upgrades from 7.0 → 8.0 exposed a recurring symptom: secondaries that come back online after the binary swap return to SECONDARY state quickly, but their WiredTiger block cache is cold. When the load balancer (or a stepDown on the primary) shifts read traffic onto a freshly upgraded secondary, query latency spikes 10–100× until the cache rewarms. For latency-sensitive workloads (Cookie's read SLA is sub-10ms p99), this looks like a production incident. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#the-problem]
Why MongoDB docs don't cover it
- The WiredTiger cache is in-process memory; it always starts empty after mongod restart and warms naturally with traffic. Standard MongoDB guidance is "let it warm". For most workloads that is fine. For low-latency, predictable-workload customers it is not fine - the natural warm-up takes minutes and the latency degradation is customer-visible. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#why-mongodb-docs-dont-cover-it]
Pre-warming SOP (manual, customer-driven)
- This is the pattern Goldman Sachs operators developed. There is no automated tool from MongoDB. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
- After binary swap and SECONDARY state, hold the node out of routing (e.g., hidden: true, priority: 0, or remove from driver readPreference rotation). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
- Run a scripted touch query workload that mimics the production read pattern - typically a parallel sweep over the most-frequently-accessed indexes (covered queries against the hot collections), constrained to a small key range so the OS cache and WT cache fill in a controlled order. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
- Monitor cache pressure with: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
- Watch bytes currently in the cache and pages read into cache - when growth flattens, warm-up is complete. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
- Reset hidden: false (or re-add to routing rotation) only after the cache fills to ~70% of cacheSizeGB and p99 latency from the touch workload matches pre-upgrade baseline. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-warming-sop-manual-customer-driven]
Recommendation to MongoDB Engineering
- This SOP is a documentation and tooling gap. The TAM team should propose: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#recommendation-to-mongodb-engineering]
- A documented "pre-warming after rolling upgrade" appendix in the upgrade tutorial. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#recommendation-to-mongodb-engineering]
- A built-in cacheWarmup admin command that walks the hot indexes for the calling user - opt-in, time-boxed, and observable via currentOp. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#recommendation-to-mongodb-engineering]
- Until then, the manual SOP above is the supported pattern for latency-critical customers. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#recommendation-to-mongodb-engineering]
9. Upgrade event coverage
- An upgrade is a scheduled maintenance event, not a deploy. TAM-owned upgrades follow a three-phase template with explicit sign-offs. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#9-upgrade-event-coverage]
Pre-event (T-7 days through T-0)
- Driver compatibility verified and deployed (Section 5). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- All pre-upgrade checks (Section 6) green and documented. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- Backup tested via restore (not just taken). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- Customer change ticket approved with explicit start/end timestamps. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- Rollback decision matrix (Section 7) attached to the change ticket. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- On-call rotation: TAM + MongoDB Premium Support + customer DBA, contact tree pre-shared. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
- Communication template ready: customer status page, internal Slack channel, exec summary email. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#pre-event-t-7-days-through-t-0]
During event (T-0 → T-end)
- Single change owner (DRI) running the runbook step-by-step. Every step gets a timestamped status post in the shared channel. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
- Health gates between each component group (after every secondary, after primary, after each shard, after mongos pool). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
- Error Envelope logged in real time. Every non-fatal warning gets: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
- Component (mongod hostname, mongos node, driver, etc.) [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
- Decision: continue / pause / rollback [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
- If the Error Envelope accumulates more than one unexplained entry, the default decision is pause, not push through. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#during-event-t-0-t-end]
Post-event (T-end → T+72 hours)
- Application smoke tests (read, write, change-stream, aggregation, index builds). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
- Driver-level smoke tests - each app team confirms they can connect, read, write, listen. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
- Metrics baseline restored: p50/p95/p99 latency, error rate, replication lag, oplog window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
- Burn-in monitoring window opens (1–4 weeks before FCV advance). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
- Customer sign-off captured in writing, attached to the change ticket. Without sign-off the event is not closed even if the binaries are upgraded. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
- Post-event review within 5 business days: what worked, what surprised us, what changes the runbook for the next upgrade. Append to the customer's customer-files/.../upgrade-history.md. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#post-event-t-end-t72-hours]
Sign-off artefacts
- A complete upgrade event produces: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- The change ticket with start/end timestamps and DRI. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- The runbook as executed (mark each step with timestamp + initials). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- The Error Envelope log. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- Pre- and post-event metric snapshots (latency, lag, oplog). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- Customer sign-off (email or ticket reply). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- Post-event review document. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
- Anything less and the event is not auditable. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sign-off-artefacts]
10. Common upgrade failures
- The recurring failure modes, ranked by frequency from real customer post-mortems: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#10-common-upgrade-failures]
10.1 Driver mismatch
- Symptom: application throws connection errors immediately after the primary steps down, or after the cluster is fully on the new binary. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#101-driver-mismatch]
- Root cause: driver was not updated to a server-compatible version before the upgrade. Common in environments where multiple application teams share a database - one team upgrades, ten others discover they can't connect. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#101-driver-mismatch]
- Driver upgrade as a mandatory pre-step, completed 7+ days before binary upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#101-driver-mismatch]
- Connection-string validation across all app teams. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#101-driver-mismatch]
- Audit currentOp().clientMetadata.driver.version on the cluster before upgrade to enumerate every driver version in production. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#101-driver-mismatch]
10.2 FCV unpinned too early
- Symptom: customer wants to roll back after the upgrade because of unrelated production incident; rollback path is closed. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#102-fcv-unpinned-too-early]
- Root cause: operator (or Atlas auto-unpin) advanced FCV before the burn-in window completed. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#102-fcv-unpinned-too-early]
- Burn-in window written into the runbook with explicit calendar dates. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#102-fcv-unpinned-too-early]
- Atlas customers: track FCV pin expiration in the customer's GS docs. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#102-fcv-unpinned-too-early]
- Self-managed: review FCV state at every weekly cadence call until burn-in expires; do not advance silently. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#102-fcv-unpinned-too-early]
10.3 Index build conflicts
- Symptom: secondary returns to RECOVERING and never reaches SECONDARY, or replSetReconfig rejects the new member set because of inconsistent indexes. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
- Root cause: an in-flight index build was interrupted by the binary swap, leaving the collection in an inconsistent state across members. Or, the new version changed default index behavior (e.g., 4.2 → 4.4 wildcard index, 7.0 → 8.0 commit-quorum semantics). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
- Pre-upgrade check: no currentOp matching index build (Section 6). [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
- Post-upgrade: scan each member for inconsistent indexes: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
- Compare across primary and secondaries. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
- Use the official MongoDB Shard Index Inconsistent Script for sharded clusters. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#103-index-build-conflicts]
10.4 mongos version skew
- Symptom: queries fail intermittently with IncompatibleServerVersion or routing errors after partial upgrade. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#104-mongos-version-skew]
- Root cause: mongos pool contains a mix of N-1 and N binaries while FCV has been advanced to N, or shards on mixed versions. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#104-mongos-version-skew]
- Strict component-order discipline (Section 4): config → shards → mongos → FCV. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#104-mongos-version-skew]
- Health gate after the last mongos restart, before any FCV change. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#104-mongos-version-skew]
- Verify all mongos versions match: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#104-mongos-version-skew]
10.5 PSA topology stepdown failure
- Symptom: during the upgrade of the data secondary in a Primary-Secondary-Arbiter (PSA) topology, the primary steps down and cannot find a majority for a new election. Cluster is read-only. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#105-psa-topology-stepdown-failure]
- Root cause: PSA only has two data-bearing voters. While the secondary is offline for upgrade, the primary alone cannot achieve majority for any write that requires w: majority, and the arbiter cannot help. If the primary then steps down, the cluster has no eligible primary until the secondary returns. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#105-psa-topology-stepdown-failure]
- Pre-upgrade: convert PSA to PSS (three data-bearing voters) before the major upgrade. This is the single most impactful PSA recommendation TAMs can make. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#105-psa-topology-stepdown-failure]
- If conversion is impossible, do not combine the secondary upgrade with the primary upgrade in the same window - leave 24+ hours between them. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#105-psa-topology-stepdown-failure]
10.6 Oplog window overflow during long maintenance
- Symptom: secondary returns from upgrade and immediately enters full initial sync because its lag exceeded the oplog window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#106-oplog-window-overflow-during-long-maintenance]
- Root cause: maintenance ran longer than expected; oplog size was sized for steady-state replication lag, not for a multi-hour maintenance window. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#106-oplog-window-overflow-during-long-maintenance]
- Section 6 oplog window check. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#106-oplog-window-overflow-during-long-maintenance]
- Resize oplog upward as a pre-upgrade step: [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#106-oplog-window-overflow-during-long-maintenance]
- Restore oplog size post-burn-in if disk pressure requires it. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#106-oplog-window-overflow-during-long-maintenance]
10.7 Cold-cache latency regression (Section 8)
- Symptom: post-upgrade p99 read latency spikes for minutes after each rolling upgrade step. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#107-cold-cache-latency-regression-section-8]
- Root cause: WiredTiger cache reset on mongod restart; default warm-up is uncontrolled. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#107-cold-cache-latency-regression-section-8]
- Mitigation: pre-warming SOP from Section 8. Document gap; advocate for upstream tooling. [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#107-cold-cache-latency-regression-section-8]
Sources
- Upgrade a Replica Set to 8.0 - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Upgrade a Standalone to 8.0 - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Upgrade a Sharded Cluster to 8.0 - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Upgrade a Replica Set to 7.0 - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- setFeatureCompatibilityVersion command - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Replica Set Elections - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Config Servers - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Config Shard - MongoDB Docs v8.0 [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Java Sync Driver Compatibility - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Java Reactive Streams Driver Compatibility - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Index Builds on Populated Collections - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- setIndexCommitQuorum - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Change Streams Production Recommendations - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Release Notes for MongoDB 8.0 - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- MongoDB 8.0 Upgrade Guide (Medium) [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Downgrade Major MongoDB Version for a Cluster - Atlas Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- WiredTiger Storage Engine - MongoDB Docs [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Troubleshooting MongoDB Shard Upgrades - Mydbops [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- FCV and Feature Flag Internals - mongodb/mongo on GitHub [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
- Faster Elections During Rolling Maintenance - Shyam Arjarapu / HackerNoon [archived source: https://llms-explorer.com/sources/mdb-context-hub/mongodb-upgrade-paths/#sources]
Where this helps
- Planning a 7.0-to-8.0 (or any multi-hop 4.4-to-8.0) major-version upgrade and needing the exact FCV pin/unpin sequence and rollback window before touching a production cluster. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Diagnosing an upgrade-related incident in progress, such as a driver mismatch, FCV refusal, mongos version skew, PSA stepdown failure, or a cold-cache latency regression. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Writing or reviewing an upgrade runbook or change ticket that needs pre-upgrade gates (oplog window, backup verification, driver compatibility) and post-event sign-off artefacts. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Coaching a customer DBA team through their first major-version rollout, including deciding whether their PSA topology needs converting to PSS first. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
Project ideas
- Build a pre-upgrade compatibility scanner that audits currentOp().clientMetadata.driver.version across an application fleet and flags any driver below the target server's minimum-supported version. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Build a scripted cache pre-warming tool that sweeps the hottest indexes on a freshly-upgraded secondary before returning it to the driver's readPreference rotation, the gap the pack flags as unsolved by upstream MongoDB tooling. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Build an FCV burn-in tracker that surfaces how long a cluster has sat on a pinned FCV and warns before an Atlas 4-week auto-unpin closes the rollback window. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Build an oplog-window pre-flight check that compares current oplog size against the expected maintenance-window duration, aiming for at least 4x, and flags clusters that need replSetResizeOplog before a scheduled upgrade. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
Antipatterns
- Advancing FCV to the new version before the burn-in window completes: this is the single most common way an upgrade's rollback path closes before anyone realizes it's needed. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Upgrading binaries without first confirming every application team's driver is on a server-compatible version: the most common day-1 incident, especially when multiple teams share one cluster. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Upgrading the data secondary and the primary of a PSA (Primary-Secondary-Arbiter) topology in the same maintenance window: with only two data-bearing voters, this can leave the cluster with no eligible primary. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Skipping a major version in the upgrade chain, such as attempting 6.0 straight to 8.0: MongoDB enforces strictly sequential major-version upgrades, and there is no supported skip path. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
Known issues
- Once setFeatureCompatibilityVersion is confirmed, that becomes the Point of No Return: the binary-downgrade rollback path closes immediately, so there's no undo if a problem surfaces afterward. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- WiredTiger cache is in-process memory that always starts cold after a mongod restart; standard upstream guidance is just to let it warm, which is too slow for latency-critical workloads and has no built-in tooling to fix it. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- A sharded cluster using the config-shard topology, where the config server doubles as a data shard (introduced in 7.0), must run transitionToDedicatedConfigServer before downgrading FCV below 8.0, and there is no equivalent forward path if this step is skipped. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
- Change-stream consumers that don't durably store their resume token can be forced into a full reseed if the oplog rolls past their last-seen position during a long maintenance window. [source] — AI-suggested, synthesized from this pack's existing facts — not extracted from a source document.
Children
- Version upgrade paths (4.4 → 5.0 → 6.0 → 7.0 → 8.0) (frontier, viability 3.70 / 5)
- Straight-to-8 jump pattern (frontier, viability 3.45 / 5)
- Feature Compatibility Version (FCV)
- FCV pinning and downgrade preservation window (frontier, viability 4.30 / 5)
- Point of No Return (frontier, viability 3.48 / 5)
- Rolling replica-set upgrade (frontier, viability 4.08 / 5)
- Replica-set election timing
- Arbiter handling and PSA topology (frontier, viability 4.28 / 5)
- Sharded cluster upgrade ordering
- Config server / shards / mongos upgrade sequence (frontier, viability 3.92 / 5)
- mongos version skew rules (frontier, viability 3.83 / 5)
- Config shard caveat (8.0+) (frontier, viability 2.58 / 5, below research gate)
- Driver compatibility matrix (Java/Node/Python/.NET/Go) (frontier, viability 4.28 / 5)
- Java driver 4.10 and 5.x retry semantics (frontier, viability 3.70 / 5)
- Pre-upgrade safety checks (frontier, viability 3.60 / 5)
- Change-stream resumability (frontier, viability 4.08 / 5)
- Oplog window sizing (frontier, viability 3.85 / 5)
- Upgrade rollback playbook (frontier, viability 3.75 / 5)
- Binary downgrade window (frontier, viability 4.38 / 5)
- Disk pre-warming SOP (Cookie 7.0→8.0 lesson) (frontier, viability 4.00 / 5)
- WiredTiger cache warm-up (frontier, viability 3.85 / 5)
- Upgrade event coverage (pre/during/post) (frontier, viability 3.02 / 5, below research gate)
- Error Envelope and customer sign-off (frontier, viability 2.50 / 5, below research gate)
- Common upgrade failures (frontier, viability 3.40 / 5)
- Driver mismatch failure mode (frontier, viability 3.98 / 5)
- FCV unpinned too early (frontier, viability 4.30 / 5)
- mongos version skew failure (frontier, viability 3.92 / 5)
- PSA topology stepdown failure (frontier, viability 3.92 / 5)
- Oplog window overflow (frontier, viability 4.25 / 5)
- Cold-cache latency regression (frontier, viability 3.80 / 5)
Frontier under this node: Arbiter handling and PSA topology (4.28), Binary downgrade window (4.38), Change-stream resumability (4.08), Cold-cache latency regression (3.80), Common upgrade failures (3.40), Config server / shards / mongos upgrade sequence (3.92), Config shard caveat (8.0+) (2.58), Disk pre-warming SOP (Cookie 7.0→8.0 lesson) (4.00), Driver compatibility matrix (Java/Node/Python/.NET/Go) (4.28), Driver mismatch failure mode (3.98), Error Envelope and customer sign-off (2.50), FCV pinning and downgrade preservation window (4.30), FCV unpinned too early (4.30), In-flight index builds, Index build commit quorum (8.0 nuance), Index build conflicts, Java driver 4.10 and 5.x retry semantics (3.70), Oplog window overflow (4.25), Oplog window sizing (3.85), PSA topology stepdown failure (3.92), Point of No Return (3.48), Pre-upgrade safety checks (3.60), Rolling replica-set upgrade (4.08), Straight-to-8 jump pattern (3.45), Upgrade event coverage (pre/during/post) (3.02), Upgrade rollback playbook (3.75), Version upgrade paths (4.4 → 5.0 → 6.0 → 7.0 → 8.0) (3.70), WiredTiger cache warm-up (3.85), mongos version skew failure (3.92), mongos version skew rules (3.83)