-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
Fully Compatible
-
ALL
-
v4.2, v4.0
-
Repl 2020-03-09
-
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.