[SERVER-54408] Rewrite AsyncTry-until to not use future recursion Created: 08/Feb/21  Updated: 29/Oct/23  Resolved: 16/Feb/21

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

Type: Improvement Priority: Major - P3
Reporter: Matthew Saltz (Inactive) Assignee: Matthew Saltz (Inactive)
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Problem/Incident
causes SERVER-55966 AsyncTry no longer handles exceptions... Closed
causes SERVER-57784 TryUntilLoop Does Not Synchronize Des... Closed
Related
related to SERVER-54616 Rewrite ReshardingTxnCloner::_updateS... Closed
is related to SERVER-50656 Add cancelation support to WaitForMaj... Closed
is related to SERVER-53500 Investigate making nested futures equ... Backlog
Backwards Compatibility: Fully Compatible
Sprint: Service Arch 2021-02-22
Participants:

 Description   

Due to SERVER-53500, using the AsyncTry-until utility can lead to an invariant being hit in unpredictable places. Since SERVER-53500 will be difficult to diagnose and potentially unfeasible to fix, so in the meantime we can rewrite the AsyncTry utility to not use recursive futures, which are responsible for hitting the invariant. I've done a POC and confirmed this fixes the issues seen by SERVER-50656 on debug builds.



 Comments   
Comment by Githook User [ 16/Feb/21 ]

Author:

{'name': 'Matthew Saltz', 'email': 'matthew.saltz@mongodb.com', 'username': 'saltzm'}

Message: SERVER-54408 Implement AsyncTry-until without future recursion
Branch: master
https://github.com/mongodb/mongo/commit/fefd2787643720bdf23f47558cbdcafd02e7452f

Generated at Thu Feb 08 05:33:27 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.