[SERVER-73016] Cancellation semantics for async_rpc and NITL should match Created: 18/Jan/23  Updated: 29/Oct/23  Resolved: 04/Mar/23

Status: Closed
Project: Core Server
Component/s: Internal Code
Affects Version/s: None
Fix Version/s: 7.0.0-rc0

Type: Improvement Priority: Major - P3
Reporter: Amirsaman Memaripour Assignee: Amirsaman Memaripour
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-71764 Implement cancellation contract for a... Closed
Backwards Compatibility: Fully Compatible
Sprint: Service Arch 2023-02-06, Service Arch 2023-02-20, Service Arch 2023-03-06
Participants:

 Description   

A follow-on ticket for SERVER-71764 to ensure both async_rpc and NetworkInterface have identical cancellation semantics for hedged operations. In particular, we should make sure:

  • The RPC library appends an OperationKey (GUID) to all operations it sends. When those operations are canceled, if networking has begun for that operation (i.e. any data may have been sent), the RPC unconditionally sends fire-and-forget _killOperations for that OperationKey to the same remote node.
  • The async_rpc API inspects the NetworkInterface operation response and see if it succeeded or successfully cancelled; if it succeeded, the async_rpc layer needs to send _killOperations itself. Otherwise, SERVER-71764 guarantees that NetworkInterface always send the required _killOperations.


 Comments   
Comment by Githook User [ 04/Mar/23 ]

Author:

{'name': 'Amirsaman Memaripour', 'email': 'amirsaman.memaripour@mongodb.com', 'username': 'samanca'}

Message: SERVER-73016 Cancel hedged operations for `async_rpc` using `_killOperations`
Branch: master
https://github.com/mongodb/mongo/commit/ea61d9d8ca4bed703033782c7b4066d87c8fd8b4

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