From d7da8829b461f539b6e92b7e3f56038a8fbd362f Mon Sep 17 00:00:00 2001 From: Lamont Nelson Date: Mon, 24 Feb 2020 22:41:31 -0500 Subject: fix shutdown of single sever monitor --- src/mongo/client/server_is_master_monitor.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mongo/client/server_is_master_monitor.cpp b/src/mongo/client/server_is_master_monitor.cpp index 4c50355b6d5..9a960722651 100644 --- a/src/mongo/client/server_is_master_monitor.cpp +++ b/src/mongo/client/server_is_master_monitor.cpp @@ -200,9 +200,11 @@ void SingleServerIsMasterMonitor::_doRemoteCommand() { void SingleServerIsMasterMonitor::shutdown() { stdx::lock_guard lock(_mutex); + if (std::exchange(_isShutdown, true)) + return; + LOG(kLogLevel.lessSevere()) << "Closing Replica Set SingleServerIsMasterMonitor for host " << _host; - _isShutdown = true; _cancelOutstandingRequest(lock); @@ -212,11 +214,11 @@ void SingleServerIsMasterMonitor::shutdown() { } void SingleServerIsMasterMonitor::_cancelOutstandingRequest(WithLock) { - if (_nextIsMasterHandle.isValid()) { + if (_nextIsMasterHandle) { _executor->cancel(_nextIsMasterHandle); } - if (_remoteCommandHandle.isValid()) { + if (_remoteCommandHandle) { _executor->cancel(_remoteCommandHandle); } -- cgit v1.2.1