[SERVER-41222] Transaction history iterator shouldn't yield on next() Created: 17/May/19  Updated: 29/Oct/23  Resolved: 24/May/19

Status: Closed
Project: Core Server
Component/s: Querying, Replication
Affects Version/s: None
Fix Version/s: 4.1.12

Type: Bug Priority: Major - P3
Reporter: Siyuan Zhou Assignee: Justin Seyster
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Backwards Compatibility: Fully Compatible
Operating System: ALL
Sprint: Query 2019-06-03
Participants:
Linked BF Score: 17

 Description   

Transaction iterator is used in SyncTail::multiApply() to fetch the oplog chain of unprepared transactions. However yielding doesn't support PBWM lock, which is held by sync tail. We don't need yielding when reading transaction history since it's always a point query.



 Comments   
Comment by Githook User [ 24/May/19 ]

Author:

{'name': 'Justin Seyster', 'email': 'justin.seyster@mongodb.com', 'username': 'jseyster'}

Message: SERVER-41222 TransactionHistoryIterator should not yield PBWM lock
Branch: master
https://github.com/mongodb/mongo/commit/12ecabd2e68d04d67d1d0e392df4add40b9e99b4

Comment by Justin Seyster [ 20/May/19 ]

siyuan.zhou Sure, that sounds like a good plan to me.

Comment by Siyuan Zhou [ 20/May/19 ]

justin.seyster, replication team can add NO_YIELD policy to stop the BF's for now and wait for your patch to fix the problem in a better way. Does that sound good to you?

Comment by Siyuan Zhou [ 17/May/19 ]

This issue happen frequently on the linked BF ticket, I hope this can be fixed by RC0. Replication team can also take this ticket, however since the proposal of using NO_YIELD policy may conflict with the change stream support of large transaction POC, justin.seyster suggested to assign this to Query team for triage.

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