-
Type:
Bug
-
Status: Closed
-
Priority:
Major - P3
-
Resolution: Fixed
-
Affects Version/s: None
-
Component/s: Replication
-
Labels:
-
Backwards Compatibility:Fully Compatible
-
Operating System:ALL
-
Backport Requested:v4.2, v4.0
-
Sprint:Repl 2020-03-09
-
Linked BF Score:51
Whenever we have a completion guard active, we must set a result on the completion guard before we exit or the system will hit an invariant. In initial_syncer.cpp InitialSyncer::_truncateOplogAndDropReplicatedDatabases() we call out to the storage interface which can throw exceptions (uasserts) which escape the completion guard and cause the invariant. We should catch these and return an initial sync failure instead.