[SERVER-72616] Remove futex usage in favour of std::atomic/AtomicWord::wait on TicketBroker Created: 09/Jan/23  Updated: 03/Oct/23

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

Type: Improvement Priority: Major - P3
Reporter: Jordi Olivares Provencio Assignee: Backlog - Storage Execution Team
Resolution: Unresolved Votes: 0
Labels: tech-debt
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-81797 Make our own portable implementation ... In Code Review
depends on SERVER-72064 Implement AtomicWord::wait similar to... Backlog
is depended on by SERVER-74082 Remove SemaphoreTicketHolder Backlog
Related
Assigned Teams:
Storage Execution
Participants:

 Description   

As part of SERVER-72067 we had to implement the TicketBroker class using raw Linux futex syscalls due to not having C++20 atomics at the time.

These calls should go away in order to use C++20 atomics once we can use them in the codebase in order to enable cross-platform usage pof the class. Right now these calls block PriorityTicketHolder from being multi-platform since they are tied to Linux.

Places affected by this have been tagged to this ticket in the comments.



 Comments   
Comment by Jordi Olivares Provencio [ 03/Oct/23 ]

Agreed, there's sadly a lack of support for timeouts in the C++ standard version.

Comment by Mathias Stearn [ 03/Oct/23 ]

I think we should make this depend on SERVER-81797 rather than SERVER-72064 because the feature that was standardized in C++20 doesn't support timeouts/deadlines, but we need them in this use case (and basically all other ones we have)

Comment by Haley Connelly [ 16/Feb/23 ]

SERVER-66893 Adds a section to the Architecture Guide about the PriorityTicketHolder and specifies it is only available on linux. Once this ticket is complete, we should update the Architecture Guide to reflect the feature is enabled on all variants

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