-
Type: Improvement
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Repl 2022-05-02, Repl 2022-05-16, Repl 2022-05-30, Repl 2022-06-13, Repl 2022-06-27
Background:
The Collection method haveCappedWaiter()s returns whether anyone has a shared pointer to the collection's cappedNotifier. Some time in the 3.6 timeframe (SERVER-29127), we started holding the cappedNotifier whenever we were in an oplog find/getMore even when we were not actually waiting for data, because holding the cappedNotifier also allows us to track the notifier version. However, haveCappedWaiters() is used for oplog visibility; specifically, if we have capped waiters, we update oplog visibility immediately (and ping the capped notifier) rather than batch notifications. This should only happen if someone is waiting on the notifier, not if they are merely tracking it.
Solution: We should maintain the version on the capped notifier whenever anyone has a shared pointer to it. But we should return true from haveCappedWaiters only if the notifier is actually in the wait loop.
- is related to
-
SERVER-59776 50% regression in single multi-update
- Closed