<!-- llms-explorer concept facts · https://llms-explorer.com/tree/mongosync-reversible-sync-and-the-rollback-window/ · pack 2026-10-31 · ~1188 tokens -->

# mongosync reversible sync and the rollback window

> Source-anchored research for mongosync reversible sync and the rollback window. Run status: COMPLETED.

Parent: [Migration and Cutover Cost (Live Migration, mongosync, Dual-Running, Egress)](https://llms-explorer.com/tree/migration-and-cutover-cost-live-migration-mongosync-dual-running-egress/) · 5 facets · 14 facts · page: https://llms-explorer.com/tree/mongosync-reversible-sync-and-the-rollback-window/

## Structure and components

- Source non-_id unique indexes must not contain legacy keys; reverse compatibility therefore includes index-format validation. (high confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- CloudSpinx's October 2026 lab account reports that the original cluster remained write-blocked after COMMITTED until explicitly unblocked. Retaining the old cluster alone does not show that it contains later destination writes. (medium confidence) (verified as of 2026-10-31) — [source](https://cloudspinx.co.ke/blog/mongodb-atlas-migration-kenya/)

## How it works

- Dropping mongosync metadata databases prevents subsequent reversal even when reversible=true; preserve metadata until the reversal decision is final. (high confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/mongosync-behavior.md)

## Problems, failure modes and limitations

- Enable reversible:true in the initial /start request; it cannot be enabled after synchronization starts. Call /reverse only after the initial sync reaches COMMITTED. (medium confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- Reverse requires matching major versions and topologies, including shard counts. Filtered sync and migrations from pre-6.0 sources cannot reverse. (medium confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- Harikrishnan's July 19, 2026 migration account caps its rollback decision at 30 minutes to limit reconciliation and retains the old cluster for at least 72 hours. These are that operator's policies, not a documented mongosync reverse-sync guarantee. (low confidence) — [source](https://harikrishnanjr.com/blog/mongosync)
- Set reversible=true in the initial /start request; it defaults to false and cannot be enabled after synchronization starts. (high confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/start.md)

## Comparisons and alternatives

- The destination oplog must retain the history from canWrite=true until /reverse is received. The documented rollback window therefore depends on retained history, rather than a guaranteed fixed number of minutes. (low confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)

## Facts and statements

- Reverse sync swaps cluster roles and copies writes made on the original destination after canWrite=true back to the original source, without recopying the original dataset. (medium confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- After /reverse, complete reverse cutover and /commit before using the original source; an unfinished reverse leaves it in an intermediate state. (high confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- A 2024 first-hand Percona-forum report describes /reverse failing while dropping mongosync_reserved_for_internal_use and succeeding with root credentials. A reply suggested a database-scoped dbAdmin role, but the thread does not confirm that proposed fix. (low confidence) — [source](https://forums.percona.com/t/revert-clusters-in-mongosync/32661)
- A user report describes request-in-progress and wrong-state errors after commit/reverse attempts while asking how to handle a source outage. The thread provides no verified recovery procedure. (low confidence) — [source](https://www.reddit.com/r/mongodb/comments/1es3myc)
- Reverse sync swaps cluster roles and applies post-cutover writes back to the original source; it is a subsequent one-way migration. (high confidence) — [source](https://www.mongodb.com/docs/mongosync/current/reference/api/reverse.md)
- canWrite=true can precede COMMITTED, but /reverse requires COMMITTED. Thus some of the retained-history window can elapse before reversal becomes available. (high confidence) (verified as of 2026-10-31) — [source](https://www.mongodb.com/docs/mongosync/current/reference/cutover-process.md)
