[SERVER-43215] Have a better way to enforce internal threads that acquire strong locks are killed during step up/down Created: 06/Sep/19 Updated: 06/Dec/22 Resolved: 09/Sep/19 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Lingzhi Deng | Assignee: | Backlog - Replication Team |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||
| Assigned Teams: |
Replication
|
||||||||||||||||
| Participants: | |||||||||||||||||
| Description |
|
Currently, internal operations rely on callingĀ setSystemOperationKillable() to allow themselves to be killed by the RstlKillOpThread on step up/down. This design is error-prone and has resulted in bugs like Instead, we should somehow make the RstlKillOpThread more intelligent on what operations to kill without relying on clients setting the flag. I think we should always kill operations that have intention to acquire strong locks (Mode X/S) because they could be blocked on prepared transactions while holding onto RSTL, preventing step up/down from proceeding. |