-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
Fully Compatible
-
ALL
-
Repl 2018-01-01, Repl 2018-01-15, Repl 2018-01-29
-
0
ReplicationCoordinatorImpl::_awaitReplication_inlock accepts waiting for an opTime and a minSnapshot. This method will register itself onto a waiter list for a condition notification and successfully return when _doneWaitingForReplication_inlock returns true.
In order for the predicate to return true, a valid snapshot must exist at the minSnapshot time.
However, the condition variable is notified when _doneWaitingForReplication_inlock succeeds with a trivially true minSnapshot value. Also note that notifying a waiter also removes it from the list waiters that are notified when optimes advance.
In this case, the predicate for _awaitReplication_inlock is stronger than to be notified, and because notification happens at most once, a client can hang waiting for a followup notification will never come.
- depends on
-
SERVER-30911 Apply timestamps for index build writes
- Closed
-
SERVER-32206 Catalog change to declare an index as multikey must be timestamped.
- Closed
-
SERVER-32251 dropCollection/dropDatabase must be timestamped
- Closed
- is related to
-
SERVER-30638 Change setReadFromMajorityCommittedSnapshot to use the current majority timestamp
- Closed
-
SERVER-30793 merge setFeatureCompatibilityVersion and _configsvrSetFeatureCompatibilityVersion
- Closed
-
SERVER-19212 New indexes shouldn't be usable until they are in the committed view
- Closed
- related to
-
SERVER-32624 dropDatabase() should wait for collection drops using ReplicationCoordinator::awaitReplication() instead of awaitReplicationOfLastOpForClient()
- Closed