-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
Replication
-
Fully Compatible
-
v4.4
-
Repl 2020-08-24, Execution Team 2020-10-19, Repl 2023-12-11, Repl 2023-12-25
-
33
lastDurable is set asynchronously from lastApplied. This can cause us to attempt to advance lastDurable beyond lastApplied. When we attempt to advance lastDurable beyond lastApplied, we skip advancing lastDurable. This can increase latency for w:"majority" writes, which wait for lastDurable to advance on a majority. It also causes odd behavior, where w:1,j:true writes return success, but durableOpTime in replSetGetStatus is not updated. When we attempt to advance lastDurable beyond lastApplied, we should advance lastDurable .
Original description:
The comments surrounding this log line suggest that this is unexpected behavior:
https://github.com/mongodb/mongo/blob/r4.4.0-rc3/src/mongo/db/repl/member_data.cpp#L163-L173
Observed on an internal cluster with a primary running 4.4.0-rc3 and secondaries on 4.2.1. Happy to increase logging level if it would be helpful to understand the behavior here.
- depends on
-
SERVER-48149 Move callers of waitUntilDurable onto JournalFlusher::waitForJournalFlush
- Closed
-
SERVER-49695 Clarify and correct synchronization of isOplogTruncateAfterPointBeingUsedForPrimary
- Closed
-
SERVER-50949 waitUntilDurable call spanning rollback can set lastDurable ahead of journaling
- Closed
- is depended on by
-
SERVER-85600 [Milestone] Misc Improvement Checkpoint
- Closed
- is related to
-
SERVER-47941 Remove log line warning of expected behavior
- Closed
- related to
-
SERVER-52661 lastDurable is set after it is cleared in initial sync
- Closed
-
SERVER-84082 Advancing lastDurable should advance lastApplied on primary
- Closed