MongoDB Upgrade Paths
Parent: MongoDB Expert Knowledge · researched 2026-05-28T15:11:05.255Z· 20 sources · 33 concepts · skill 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 shar
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. [source]
- 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. [source]
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). [source]
- Drafting or reviewing an upgrade runbook, change ticket, or maintenance-window plan. [source]
- Designing the FCV pin / unpin schedule and the binary-downgrade rollback window. [source]
- Diagnosing an upgrade-related incident (driver mismatch, FCV refusal, mongos skew, cold-cache regression, PSA stepdown failure). [source]
- Coaching a customer DBA team through their first 8.0 rollout. [source]
- Producing post-event sign-off artefacts (Error Envelope, metric snapshots, customer sign-off). [source]
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). [source]
- 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. [source]
- Driver-internal questions unrelated to server upgrades - point at the driver-specific skill (mongodb-drivers-k8s, etc.). [source]
- Schema migration or aggregation changes - use mongodb-migration-patterns or mongodb-aggregation-pipeline. [source]
- Backup / restore design - use mongodb-backup-restore. [source]
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. [source]
- mongodb-atlas-expert - Atlas UI flows, Atlas-managed FCV pin window, Atlas-only safety rails. [source]
- mongodb-replication - replica-set internals, election theory, write-concern semantics that this skill assumes. [source]
- mongodb-sharding - sharded-cluster topology, config-shard vs dedicated-config-server, balancer internals. [source]
- mongodb-backup-restore - backup verification expected by Section 6 pre-upgrade checks. [source]
- mongodb-performance-troubleshooting - root-causing the cold-cache regression in Section 8. [source]
- atlas-diagnostics-expert - diagnostics package collection during upgrade incidents. [source]
- incident-response - severity / IC handling if an upgrade goes wrong. [source]
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". [source]
- To upgrade to 7.0, every member must be on 6.0 with FCV "6.0". [source]
- The same chain holds for 5.0 ← 4.4. You cannot jump 5.0 → 7.0 or 6.0 → 8.0. [source]
- 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. [source]
"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: [source]
- 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). [source]
- 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. [source]
- 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. [source]
- 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. [source]
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. [source]
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. [source]
Key facts
- FCV is separate from binary version. db.version() returns the binary; featureCompatibilityVersion is its own admin parameter. [source]
- After upgrading every node's binary to N, the FCV remains "N-1" until you explicitly run setFeatureCompatibilityVersion. [source]
- 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. [source]
- setFeatureCompatibilityVersion requires confirm: true starting in 7.0 and remains required in 8.0: [source]
- Downgrade requires the inverse: FCV must be moved back first, then binaries. [source]
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". [source]
- Self-managed: the preservation window is open as long as you keep FCV pinned and no backward-incompatible features have been used. [source]
- 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"). [source]
- 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." [source]
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: [source]
- Driver upgrades have been deployed and steady-state for 7+ days. [source]
- No production incidents traced to the new binary. [source]
- Backup verification on the new binaries succeeded. [source]
- The application owner has explicitly signed off on irreversibility. [source]
3. Rolling upgrades — replica sets
- The rolling upgrade contract: at any moment, the replica set retains a writable primary and a majority of voters. [source]
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. [source]
- 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. [source]
- Primary, last. Connect mongosh to the primary and run: [source]
- Stepping down is preferable to a hard shutdown because it triggers a clean election. Then upgrade the now-secondary former primary. [source]
Election timing
- Median election time with default settings is ~10–12 seconds. Plan for a brief write outage when the primary steps down. [source]
- 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. [source]
- 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. [source]
Arbiter handling
- Arbiters cannot become primary and hold no data, so they do not require FCV considerations on upgrade. [source]
- 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. [source]
4. Sharded cluster upgrades
- Sharded clusters have three component classes - config servers, shards, mongos - and the upgrade ordering is strict. [source]
Order (8.0 example, applies to every major hop)
- Pre-step 0 - Disable the balancer before any binary change: [source]
- Then walk the tiers in this strict order: [source]
- Config server replica set (CSRS). Apply the rolling replica-set procedure (Section 3) to the config servers. [source]
- 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. [source]
- mongos routers last. mongos is stateless, so you can drain connections and restart them in parallel groups. [source]
- Post-step - Re-enable balancer, then set FCV only after all three tiers are upgraded and stable: [source]
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". [source]
- Mixed-version mongos pools are tolerated during the upgrade window but should not be left in production beyond the maintenance event. [source]
- 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. [source]
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. [source]
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. [source]
Retry semantics
- retryWrites=true is default on 4.2+ drivers; do not disable it for upgrade convenience. [source]
- retryReads=true is default on 4.0+ drivers. [source]
- 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. [source]
- For 5.x Java drivers, MongoClientSettings exposes finer-grained serverApi and serverSelectionTimeout. Default is fine for upgrades. [source]
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. [source]
- Python (PyMongo): 4.7+ for 7.0, 4.9+ for 8.0. [source]
- C# / .NET: 2.28+ for 7.0, 3.0+ for 8.0. [source]
- Go: 1.13+ for 7.0, 1.17+ for 8.0. [source]
- The canonical matrix lives at https://www.mongodb.com/docs/drivers/ - verify there for the exact patch level before any production upgrade. [source]
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. [source]
Required gates
- All nodes on the prerequisite version, FCV matches: [source]
- No in-flight index builds: [source]
- An interrupted index build leaves the collection in unfinished state. Either let the build complete or dropIndex and restart it after the upgrade. [source]
- 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. [source]
- Oplog window comfortably exceeds expected maintenance duration: [source]
- 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. [source]
- Backup verified, not just taken. Restore the latest snapshot into a scratch cluster and run a smoke query. Untested backups are not backups. [source]
- Driver compatibility deployed. Drivers should be on the target-server-compatible version for at least 7 days before the upgrade. [source]
- Replica lag < 5 seconds on every secondary: [source]
- Disk free space: at minimum 25% headroom. WiredTiger needs room for the new on-disk format files even when FCV is held. [source]
- 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). [source]
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. [source]
- 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. [source]
Binary downgrade window
- The rollback path depends entirely on whether FCV was pinned before the upgrade. [source]
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: [source]
- 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. [source]
- On self-managed, there is no automation. Operator discipline is the only enforcement. Add the burn-in calendar reminder to your runbook. [source]
Practical rollback playbook
- Detect regression (latency, error rate, missing feature support in application). [source]
- Confirm FCV state. If FCV is still "N-1": [source]
- Apply rolling binary downgrade in reverse order: primary last for replica sets; mongos → shards → config servers for sharded clusters. [source]
- If FCV has been advanced: [source]
- Audit for use of new-version-only features. Atlas indexes that depend on new operators, new index types, sharded time-series with reshardCollection, etc. [source]
- If clean, run setFeatureCompatibilityVersion: "N-1", confirm: true. If features are in use, open a Premium Support case before touching anything. [source]
- Document the rollback as a near-miss event regardless of whether downgrade succeeded. The data is the most valuable input for the next upgrade. [source]
8. Disk pre-warming (Cookie 7.0 → 8.0 lesson)
- Status: known operational gap, manual SOP, not documented in upstream MongoDB upgrade procedures. [source]
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. [source]
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. [source]
Pre-warming SOP (manual, customer-driven)
- This is the pattern Goldman Sachs operators developed. There is no automated tool from MongoDB. [source]
- After binary swap and SECONDARY state, hold the node out of routing (e.g., hidden: true, priority: 0, or remove from driver readPreference rotation). [source]
- 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. [source]
- Monitor cache pressure with: [source]
- Watch bytes currently in the cache and pages read into cache - when growth flattens, warm-up is complete. [source]
- 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. [source]
Recommendation to MongoDB Engineering
- This SOP is a documentation and tooling gap. The TAM team should propose: [source]
- A documented "pre-warming after rolling upgrade" appendix in the upgrade tutorial. [source]
- A built-in cacheWarmup admin command that walks the hot indexes for the calling user - opt-in, time-boxed, and observable via currentOp. [source]
- Until then, the manual SOP above is the supported pattern for latency-critical customers. [source]
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. [source]
Pre-event (T-7 days through T-0)
- Driver compatibility verified and deployed (Section 5). [source]
- All pre-upgrade checks (Section 6) green and documented. [source]
- Backup tested via restore (not just taken). [source]
- Customer change ticket approved with explicit start/end timestamps. [source]
- Rollback decision matrix (Section 7) attached to the change ticket. [source]
- On-call rotation: TAM + MongoDB Premium Support + customer DBA, contact tree pre-shared. [source]
- Communication template ready: customer status page, internal Slack channel, exec summary email. [source]
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. [source]
- Health gates between each component group (after every secondary, after primary, after each shard, after mongos pool). [source]
- Error Envelope logged in real time. Every non-fatal warning gets: [source]
- Timestamp [source]
- Component (mongod hostname, mongos node, driver, etc.) [source]
- Error text verbatim [source]
- Decision: continue / pause / rollback [source]
- Sign-off by DRI [source]
- If the Error Envelope accumulates more than one unexplained entry, the default decision is pause, not push through. [source]
Post-event (T-end → T+72 hours)
- Application smoke tests (read, write, change-stream, aggregation, index builds). [source]
- Driver-level smoke tests - each app team confirms they can connect, read, write, listen. [source]
- Metrics baseline restored: p50/p95/p99 latency, error rate, replication lag, oplog window. [source]
- Burn-in monitoring window opens (1–4 weeks before FCV advance). [source]
- 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. [source]
- 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. [source]
Sign-off artefacts
- A complete upgrade event produces: [source]
- The change ticket with start/end timestamps and DRI. [source]
- The runbook as executed (mark each step with timestamp + initials). [source]
- The Error Envelope log. [source]
- Pre- and post-event metric snapshots (latency, lag, oplog). [source]
- Customer sign-off (email or ticket reply). [source]
- Post-event review document. [source]
- Anything less and the event is not auditable. [source]
10. Common upgrade failures
- The recurring failure modes, ranked by frequency from real customer post-mortems: [source]
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. [source]
- 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. [source]
- Driver upgrade as a mandatory pre-step, completed 7+ days before binary upgrade. [source]
- Connection-string validation across all app teams. [source]
- Audit currentOp().clientMetadata.driver.version on the cluster before upgrade to enumerate every driver version in production. [source]
10.2 FCV unpinned too early
- Symptom: customer wants to roll back after the upgrade because of unrelated production incident; rollback path is closed. [source]
- Root cause: operator (or Atlas auto-unpin) advanced FCV before the burn-in window completed. [source]
- Burn-in window written into the runbook with explicit calendar dates. [source]
- Atlas customers: track FCV pin expiration in the customer's GS docs. [source]
- Self-managed: review FCV state at every weekly cadence call until burn-in expires; do not advance silently. [source]
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. [source]
- 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). [source]
- Pre-upgrade check: no currentOp matching index build (Section 6). [source]
- Post-upgrade: scan each member for inconsistent indexes: [source]
- Compare across primary and secondaries. [source]
- Use the official MongoDB Shard Index Inconsistent Script for sharded clusters. [source]
10.4 mongos version skew
- Symptom: queries fail intermittently with IncompatibleServerVersion or routing errors after partial upgrade. [source]
- 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. [source]
- Strict component-order discipline (Section 4): config → shards → mongos → FCV. [source]
- Health gate after the last mongos restart, before any FCV change. [source]
- Verify all mongos versions match: [source]
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. [source]
- 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. [source]
- 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. [source]
- If conversion is impossible, do not combine the secondary upgrade with the primary upgrade in the same window - leave 24+ hours between them. [source]
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. [source]
- Root cause: maintenance ran longer than expected; oplog size was sized for steady-state replication lag, not for a multi-hour maintenance window. [source]
- Section 6 oplog window check. [source]
- Resize oplog upward as a pre-upgrade step: [source]
- Restore oplog size post-burn-in if disk pressure requires it. [source]
10.7 Cold-cache latency regression (Section 8)
Sources
- Upgrade a Replica Set to 8.0 - MongoDB Docs [source]
- Upgrade a Standalone to 8.0 - MongoDB Docs [source]
- Upgrade a Sharded Cluster to 8.0 - MongoDB Docs [source]
- Upgrade a Replica Set to 7.0 - MongoDB Docs [source]
- setFeatureCompatibilityVersion command - MongoDB Docs [source]
- Replica Set Elections - MongoDB Docs [source]
- Config Servers - MongoDB Docs [source]
- Config Shard - MongoDB Docs v8.0 [source]
- Java Sync Driver Compatibility - MongoDB Docs [source]
- Java Reactive Streams Driver Compatibility - MongoDB Docs [source]
- Index Builds on Populated Collections - MongoDB Docs [source]
- setIndexCommitQuorum - MongoDB Docs [source]
- Change Streams Production Recommendations - MongoDB Docs [source]
- Release Notes for MongoDB 8.0 - MongoDB Docs [source]
- MongoDB 8.0 Upgrade Guide (Medium) [source]
- Downgrade Major MongoDB Version for a Cluster - Atlas Docs [source]
- WiredTiger Storage Engine - MongoDB Docs [source]
- Troubleshooting MongoDB Shard Upgrades - Mydbops [source]
- FCV and Feature Flag Internals - mongodb/mongo on GitHub [source]
- Faster Elections During Rolling Maintenance - Shyam Arjarapu / HackerNoon [source]
Children
- Version upgrade paths (4.4 → 5.0 → 6.0 → 7.0 → 8.0) (frontier)
- Straight-to-8 jump pattern (frontier)
- Feature Compatibility Version (FCV) (frontier)
- FCV pinning and downgrade preservation window (frontier)
- Point of No Return (frontier)
- Rolling replica-set upgrade (frontier)
- Replica-set election timing (frontier)
- Arbiter handling and PSA topology (frontier)
- Sharded cluster upgrade ordering (frontier)
- Config server / shards / mongos upgrade sequence (frontier)
- mongos version skew rules (frontier)
- Config shard caveat (8.0+) (frontier)
- Driver compatibility matrix (Java/Node/Python/.NET/Go) (frontier)
- Java driver 4.10 and 5.x retry semantics (frontier)
- Pre-upgrade safety checks (frontier)
- In-flight index builds (frontier)
- Change-stream resumability (frontier)
- Oplog window sizing (frontier)
- Index build commit quorum (8.0 nuance) (frontier)
- Upgrade rollback playbook (frontier)
- Binary downgrade window (frontier)
- Disk pre-warming SOP (Cookie 7.0→8.0 lesson) (frontier)
- WiredTiger cache warm-up (frontier)
- Upgrade event coverage (pre/during/post) (frontier)
- Error Envelope and customer sign-off (frontier)
- Common upgrade failures (frontier)
- Driver mismatch failure mode (frontier)
- FCV unpinned too early (frontier)
- Index build conflicts (frontier)
- mongos version skew failure (frontier)
- PSA topology stepdown failure (frontier)
- Oplog window overflow (frontier)
- Cold-cache latency regression (frontier)
Frontier under this node: Arbiter handling and PSA topology, Binary downgrade window, Change-stream resumability, Cold-cache latency regression, Common upgrade failures, Config server / shards / mongos upgrade sequence, Config shard caveat (8.0+), Disk pre-warming SOP (Cookie 7.0→8.0 lesson), Driver compatibility matrix (Java/Node/Python/.NET/Go), Driver mismatch failure mode, Error Envelope and customer sign-off, FCV pinning and downgrade preservation window, FCV unpinned too early, Feature Compatibility Version (FCV), In-flight index builds, Index build commit quorum (8.0 nuance), Index build conflicts, Java driver 4.10 and 5.x retry semantics, Oplog window overflow, Oplog window sizing, PSA topology stepdown failure, Point of No Return, Pre-upgrade safety checks, Replica-set election timing, Rolling replica-set upgrade, Sharded cluster upgrade ordering, Straight-to-8 jump pattern, Upgrade event coverage (pre/during/post), Upgrade rollback playbook, Version upgrade paths (4.4 → 5.0 → 6.0 → 7.0 → 8.0), WiredTiger cache warm-up, mongos version skew failure, mongos version skew rules