-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Storage Execution
-
ALL
-
0
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Bug
Startup replication recovery assumes "that the size metadata on disk is already correct with respect to the end state of recovery", except for the oplog and empty collections, and skips adjusting collection size and counts. This assumption is incorrect on a secondary when (1) some portion of its oplog is durable but not applied and (2) that portion contains changes to a non-empty collection's size/count.
During clean shutdown, sizeStorer updates can be lost and not fixed upon startup recovery.
Reproducible Example
WIP
Solution
In rollback_impl.cpp, we perform a collection scan to repair incorrect size/counts. We may need to perform a similar collection scan on recovery as well. I have two options questions:
- How do we determine the set of collections that need repair during recovery?
- Adding collection scans to recovery seems cost-prohibitive. Is there another way?
SPM-4163 also fixes this problem, but the feature is not supported on ASC yet.