[SERVER-82376] FCV opobserver _setVersion must not throw interrupts Created: 23/Oct/23  Updated: 30/Oct/23  Resolved: 30/Oct/23

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Matthew Russotto Assignee: Backlog - Replication Team
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Related
is related to SERVER-82223 Commit handler in FCV op observer is ... Closed
Assigned Teams:
Replication
Operating System: ALL
Participants:
Linked BF Score: 105

 Description   

The call FcvOpObserver::_setVersion is run inside an onCommit handler, which is essentially noexcept (it calls terminate() manually on exception). However, killSessionsAbortUnpreparedTransactions, which it calls, is an interrupt point, so we can be interrupted (e.g. by stepdown, or even a user kill) and therefore crash.

This is essentially a critical section – once we have committed the FCV update we MUST kill all the transactions and complete the _setVersion handler. But it's run from an (interruptable) client session.



 Comments   
Comment by Lingzhi Deng [ 30/Oct/23 ]

I think this is a dup of SERVER-82223.

Generated at Thu Feb 08 06:49:03 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.