[SERVER-32950] Global resource should participate in two-phase locking Created: 29/Jan/18 Updated: 29/Oct/23 Resolved: 08/Feb/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Concurrency, Storage |
| Affects Version/s: | 3.0.0, 3.2.18, 3.4.11, 3.6.2, 3.7.1 |
| Fix Version/s: | 3.7.2 |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Eric Milkie | Assignee: | Eric Milkie |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Sprint: | Storage 2018-01-29, Storage 2018-02-12 | ||||||||
| Participants: | |||||||||
| Description |
|
Currently, the two-phase locking logic only affects mode X and IX locks, and only for database, collection, and metadata Resources. Mode S and IS locks for any Resource, and Mode X and IX locks for global, mmapv1_flush, and mutex Resources do not participate in two-phase locking; such locks are released as soon as their holder destructs and are not held until the end of a containing WriteUnitOfWork. This logic should be changed such that the Global resource participates in two-phase locking. Otherwise, it is possible to write code that has a Database resource locked but without an appropriate Global resource lock – a violation of locking rules. |
| Comments |
| Comment by Githook User [ 08/Feb/18 ] |
|
Author: {'email': 'milkie@10gen.com', 'name': 'Eric Milkie', 'username': 'milkie'}Message: |