-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
ALL
-
Execution EMEA Team 2023-09-18, Execution EMEA Team 2023-10-02, CAR Team 2023-11-13
-
5
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
Index builds use temporary record stores, which are not supposed to track size adjustments (and check inReplicationRecovery). On resume, the temporary record stores are opened using the regular record store code path, causing them to track size adjustments.
inReplicationRecovery is set to true in recoverFromOplog, but concurrent checks for inReplicationRecovery can be running before the recovery thread reaches that point. This is the case for index builds, which are restarted/resumed earlier in the recovery process, when rolling back the storage engine to the stable timestamp and re-opening the catalog (_recoverToStableTimestamp). This creates a race between an index build thread checking inReplicationRecovery and the rollback thread setting the flag.