diff options
author | George Wangensteen <george.wangensteen@mongodb.com> | 2021-06-07 20:27:34 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-09 17:13:01 +0000 |
commit | b695ced699ecd7529c3cfbc87b081bc60caea68b (patch) | |
tree | 45c97976bb2c2ce0034b4d6525010f80de84e440 | |
parent | c970224e10642c7155ffca8c698d40848481c54e (diff) | |
download | mongo-b695ced699ecd7529c3cfbc87b081bc60caea68b.tar.gz |
SERVER-57472 Yield service executor worker threads after sinking messages
-rw-r--r-- | src/mongo/transport/service_state_machine.cpp | 5 |
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() { |