[SERVER-63978] Killing a child session should prevent checking out its parent Created: 24/Feb/22 Updated: 29/Oct/23 Resolved: 25/Feb/22 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 6.0.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Jack Mulrow | Assignee: | Jack Mulrow |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||
| Backwards Compatibility: | Fully Compatible | ||||
| Operating System: | ALL | ||||
| Sprint: | Sharding 2022-03-07 | ||||
| Participants: | |||||
| Linked BF Score: | 135 | ||||
| Description |
|
When a session is killed in the SessionCatalog, an internal counter is incremented to prevent the session from being checked out for a normal operation until the killer has checked it out. To check out a "child" session (a new concept introduced in PM-2210), the child's "parent" session must also be checked out, which is a separate session in the SessionCatalog. Killing the child only increments the child's counter, so nothing prevents the parent from getting checked out and blocking the killer from checking out the child, which can lead to a deadlock if the parent gets blocked like in the case of a replication state change, where all sessions are killed while the RSTL is held. Instead, killing a child should also prevent its parent from getting checked out until the killer has checked out the child. |
| Comments |
| Comment by Githook User [ 25/Feb/22 ] |
|
Author: {'name': 'Jack Mulrow', 'email': 'jack.mulrow@mongodb.com', 'username': 'jsmulrow'}Message: |