[SERVER-31025] dbCheck will cause rollback to abort Created: 11/Sep/17  Updated: 24/Apr/23  Resolved: 24/Apr/23

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: 3.5.12
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Robert Guo (Inactive) Assignee: Backlog - Replication Team
Resolution: Won't Do Votes: 0
Labels: rbfz
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to SERVER-30832 Fix dbCheck behavior on rollback Backlog
Assigned Teams:
Replication
Participants:

 Description   

The dbcheck oplog type OplogEntry::CommandType::kDbCheck is currently not supported by rollback, so attempting to roll back a dbCheck will cause rollback to terminate.

[js_test:rollback_test_1504934424_0-dbCheckFassert] 2017-09-11T10:49:45.679-0400 d20013| 2017-09-11T10:49:45.678-0400 F ROLLBACK [rsBackgroundSync] Unable to complete rollback. A full resync may be needed: UnrecoverableRollbackError: need to rollback, but unable to determine common point between local and remote oplog: Can't roll back this command yet:  cmdname = dbCheck
[js_test:rollback_test_1504934424_0-dbCheckFassert] 2017-09-11T10:49:45.679-0400 d20013| 2017-09-11T10:49:45.678-0400 F -        [rsBackgroundSync] Fatal Assertion 40507 at src/mongo/db/repl/rs_rollback.cpp 1459

The correct behavior should be to make dbCheck a no-op during rollback similar to dropDatabase, as dbCheck commands do not need to be rolled back.



 Comments   
Comment by Louis Williams [ 15/Dec/21 ]

This only applies to enableMajorityReadConcern=false. For backporting to 4.4, we should refuse to run dbCheck in that configuration since durable history is available and makes EMRC=off unnecessary.

Generated at Thu Feb 08 04:25:46 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.