summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Wangensteen <george.wangensteen@mongodb.com>2021-06-07 20:27:34 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-09 17:13:01 +0000
commitb695ced699ecd7529c3cfbc87b081bc60caea68b (patch)
tree45c97976bb2c2ce0034b4d6525010f80de84e440
parentc970224e10642c7155ffca8c698d40848481c54e (diff)
downloadmongo-b695ced699ecd7529c3cfbc87b081bc60caea68b.tar.gz
SERVER-57472 Yield service executor worker threads after sinking messages
-rw-r--r--src/mongo/transport/service_state_machine.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mongo/transport/service_state_machine.cpp b/src/mongo/transport/service_state_machine.cpp
index 52b8df8b438..7b5012887a7 100644
--- a/src/mongo/transport/service_state_machine.cpp
+++ b/src/mongo/transport/service_state_machine.cpp
@@ -432,6 +432,11 @@ void ServiceStateMachine::Impl::sinkCallback(Status status) {
} else {
_state.store(State::Source);
}
+ // Performance testing showed a significant benefit from yielding here.
+ // TODO SERVER-57531: Once we enable the use of a fixed-size thread pool
+ // for handling client connection handshaking, we should only yield here if
+ // we're on a dedicated thread.
+ executor()->yieldIfAppropriate();
}
Future<void> ServiceStateMachine::Impl::processMessage() {