[SERVER-44028] Remove global X lock for Cloner Created: 15/Oct/19 Updated: 29/Oct/23 Resolved: 01/Nov/19 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 4.3.1, 4.2.2 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Lingzhi Deng | Assignee: | Gregory Wlodarek |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||
| Backport Requested: |
v4.2
|
||||||||||||
| Sprint: | Execution Team 2019-11-04 | ||||||||||||
| Participants: | |||||||||||||
| Description |
|
Remove global X lock acquisition for Cloner. This is because acquiring global lock in X mode can be blocked by prepared transactions. The enqueued global X lock can block oplog queries which need the global IS lock. If these oplog queries and the data replication are needed to satisfy the prepared transaction's write concern, then the prepare transaction and replication cannot make progress. Thus a deadlock occurs. Alternatively, if removing global X lock is not an option, deprecate the usage or make sure it won't be blocked on prepare transactions. |
| Comments |
| Comment by Githook User [ 18/Nov/19 ] |
|
Author: {'username': 'GWlodarek', 'email': 'gregory.wlodarek@mongodb.com', 'name': 'Gregory Wlodarek'}Message: (cherry picked from commit 6e1889fb793e1927a5ca695c8839f9184e5d8aa4) |
| Comment by Githook User [ 01/Nov/19 ] |
|
Author: {'username': 'GWlodarek', 'email': 'gregory.wlodarek@mongodb.com', 'name': 'Gregory Wlodarek'}Message: |
| Comment by Eric Milkie [ 22/Oct/19 ] |
|
The Cloner is currently used by rollback-via-refetch and by the movePrimary command. |
| Comment by Eric Milkie [ 16/Oct/19 ] |
|
// XXX: can probably take dblock instead |