[SERVER-34917] Move the expired transaction aborter thread off of PeriodicRunnerASIO Created: 09/May/18  Updated: 08/Jan/24  Resolved: 11/May/18

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

Type: Bug Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Dianna Hohensee (Inactive)
Resolution: Gone away Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by SERVER-34732 collection drop hangs in test of tran... Closed
Related
related to SERVER-34923 Replace PeriodicRunnerASIO Closed
Operating System: ALL
Sprint: Storage NYC 2018-05-21
Participants:

 Description   

PeriodicRunnerASIO runs jobs serially and there are already jobs on it that take locks. Thus inactive transactions can block such PeriodicRunnerASIO jobs, and then the expired transaction aborter thread will never run to clear an expired transaction's lock resources, to unblock the PeriodicRunnerASIO jobs.

While v4.0 transaction operations take only intent locks, a concurrent non-transaction operation like dropCollection that requires an exclusive X lock can block behind a transaction, and then the lock fairness policy will cause IS and IX lock requests to queue up behind the X lock request.

So the following deadlock can occur in v4.0:
expired transaction aborter wait on -> PeriodicRunnerASIO job waits on -> drop cmd waits on -> inactive transaction locks



 Comments   
Comment by Dianna Hohensee (Inactive) [ 11/May/18 ]

I'm resolving this ticket as gone away, since running on the PeriodicRunner is no longer a problem due to SERVER-34923. The repro in SERVER-34732 now runs without a hang.

Generated at Thu Feb 08 04:38:15 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.