Uploaded image for project: 'Documentation'
  1. Documentation
  2. DOCS-13626

[Server] 300MB rollback limit still enforced after 4.0 under certain conditions



      Starting in version 4.0, MongoDB has no limit on the amount of data that can be rolled back.

      In previous versions, a mongod instance will not roll back more than 300 megabytes of data and requires manual intervention if more than 300 megabytes of data need to be rolled back.

      Turns out, this is not 100% accurate. There are conditions under which the 300MB limit is still enforced after 4.0.

      There are two methods used for rollback:
      1. "Rollback to Timestamp" (default)
      2. "Rollback-via-Refetch" - used when "enableMajorityReadConcern=false"

      Under condition #1 the 300MB is indeed no longer enforced post-4.0. But under condition #2, the limit is still enforced, and users can still get the following assertions:

      2020-05-03T00:11:01.078Z I ROLLBACK [rsBackgroundSync] Rollback finished. The final minValid is: { ts: Timestamp(1588464075, 5), t: 34 }
      2020-05-03T00:11:01.079Z F -        [rsBackgroundSync] 
      2020-05-03T00:11:01.079Z F -        [rsBackgroundSync] Fatal Assertion 40507 at src/mongo/db/repl/rs_rollback.cpp 1515
      2020-05-03T00:11:01.079Z F ROLLBACK [rsBackgroundSync] Unable to complete rollback. A full resync may be needed: UnrecoverableRollbackError: replSet too much data to roll back.

      This distinction appears here in SERVER-23392.

      Scope of changes

      Impact to Other Docs

      MVP (Work and Date)

      Resources (Scope or Design Docs, Invision, etc.)

            Unassigned Unassigned
            eric.sommer@mongodb.com Eric Sommer
            0 Vote for this issue
            4 Start watching this issue

              1 year, 24 weeks, 6 days ago