-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
Labels:None
-
Fully Compatible
-
Repl 2019-10-07, Repl 2019-10-21
BackgroundSync and InitialSyncer both call OplogBuffer::waitForSpace, then OplogApplier::enqueue, which calls OplogBuffer::pushAllNonBlocking. This is a roundabout way of doing a blocking enqueue, and it requires BackgroundSync and InitialSyncer each to know about both the OplogApplier and its internal OplogBuffer.
We will make OplogApplier::enqueue blocking, and make its callee OplogBuffer::push blocking too. This simplifies BackgroundSync/InitialSyncer and decouples them from OplogBuffer.