Details
-
Improvement
-
Resolution: Fixed
-
Major - P3
-
None
-
None
-
Fully Compatible
-
Repl 2019-10-07, Repl 2019-10-21
Description
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.