summaryrefslogtreecommitdiff
path: root/src/mongo/client/replica_set_monitor_manager.cpp
diff options
context:
space:
mode:
authorBen Caimano <ben.caimano@10gen.com>2019-07-31 11:51:52 -0400
committerBen Caimano <ben.caimano@10gen.com>2019-07-31 13:59:54 -0400
commitd72a385ade40cec9731242af52228ba279765711 (patch)
tree3d4787c172b9ef30c23185ddb28e171f313121bf /src/mongo/client/replica_set_monitor_manager.cpp
parent5a0476d730f5efa09cc20dd7dcea03cb96450e76 (diff)
downloadmongo-d72a385ade40cec9731242af52228ba279765711.tar.gz
SERVER-42501 ReplicaSetMonitorManager::shutdown() logs sparingly
Diffstat (limited to 'src/mongo/client/replica_set_monitor_manager.cpp')
-rw-r--r--src/mongo/client/replica_set_monitor_manager.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/client/replica_set_monitor_manager.cpp b/src/mongo/client/replica_set_monitor_manager.cpp
index 94aa109ad26..1dacf288c9d 100644
--- a/src/mongo/client/replica_set_monitor_manager.cpp
+++ b/src/mongo/client/replica_set_monitor_manager.cpp
@@ -154,6 +154,11 @@ void ReplicaSetMonitorManager::removeMonitor(StringData setName) {
}
void ReplicaSetMonitorManager::shutdown() {
+ // Sadly, this function can run very late in the post-main shutdown because there is still
+ // a globalRSMonitorManager. We have to be very carefully how we log because this can actually
+ // shutdown later than the logging subsystem. This will be less of an issue once SERVER-42437 is
+ // done.
+
decltype(_monitors) monitors;
{
stdx::lock_guard<stdx::mutex> lk(_mutex);
@@ -164,7 +169,9 @@ void ReplicaSetMonitorManager::shutdown() {
monitors = std::exchange(_monitors, {});
}
- log() << "Dropping all ongoing scans against replica sets";
+ if (monitors.size()) {
+ log() << "Dropping all ongoing scans against replica sets";
+ }
for (auto& [name, monitor] : monitors) {
auto anchor = monitor.lock();
if (!anchor) {