-
Type:
Bug
-
Resolution: Won't Fix
-
Priority:
Major - P3
-
None
-
Affects Version/s: 3.2.10
-
Component/s: Sharding
-
None
-
Sharding
-
ALL
-
Sharding 2016-11-21, Sharding 2016-12-12, Sharding 2017-01-02
-
0
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
Here's the hypothetical scenario:
1. Thread 1 sees that the lock document does not exist and tries to create it.
C1: unlocked, owned by nobody
C2: -
C3: -
2. Thread 2 comes in and sees on the first config the the lock is in unlocked state and tries to grab it by sending updates to 3 config servers.
3. However, since the update is upsert: false, it will only succeed in updating the first one.
C1: locked, owned by thread 2
C2: -
C3: -
4. Since thread 2 failed to update to all 3 config servers, it will enter the tournament round which will then fail immediately because the lock document does not exist on the other config servers.