diff options
author | Amirsaman Memaripour <amirsaman.memaripour@mongodb.com> | 2021-06-30 18:38:04 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-07-06 17:15:13 +0000 |
commit | d0d4084cffcf71ea6dc56705a413f16051452447 (patch) | |
tree | 53117980b985bd0162fca110335cade468f395ff /src/mongo/executor | |
parent | a29714ffc0ae3b70242a3665121748da360686ba (diff) | |
download | mongo-d0d4084cffcf71ea6dc56705a413f16051452447.tar.gz |
SERVER-58139 Check for cancelation before sending remote commands
Diffstat (limited to 'src/mongo/executor')
-rw-r--r-- | src/mongo/executor/network_interface_tl.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mongo/executor/network_interface_tl.cpp b/src/mongo/executor/network_interface_tl.cpp index 0cf868011c5..edcb001635a 100644 --- a/src/mongo/executor/network_interface_tl.cpp +++ b/src/mongo/executor/network_interface_tl.cpp @@ -791,6 +791,19 @@ void NetworkInterfaceTL::RequestManager::trySend( "requestId"_attr = requestState->request->id, "target"_attr = requestState->request->target); + // An attempt to avoid sending a request after its command has been canceled or already executed + // using another connection. Just a best effort to mitigate unnecessary resource consumption if + // possible, and allow deterministic cancellation of requests in testing. + if (cmdState->finishLine.isReady()) { + LOGV2_DEBUG(5813901, + 2, + "Skipping request as it has already been fulfilled or canceled", + "requestId"_attr = requestState->request->id, + "target"_attr = requestState->request->target); + requestState->returnConnection(Status::OK()); + return; + } + if (auto counters = cmdState->interface->_counters) { counters->recordSent(); } |