diff options
Diffstat (limited to 'src/mongo/executor/network_interface_impl.cpp')
-rw-r--r-- | src/mongo/executor/network_interface_impl.cpp | 38 |
1 files changed, 10 insertions, 28 deletions
diff --git a/src/mongo/executor/network_interface_impl.cpp b/src/mongo/executor/network_interface_impl.cpp index 3a025332175..38037d056c0 100644 --- a/src/mongo/executor/network_interface_impl.cpp +++ b/src/mongo/executor/network_interface_impl.cpp @@ -69,7 +69,6 @@ NetworkInterfaceImpl::NetworkInterfaceImpl() : NetworkInterfaceImpl(nullptr){}; NetworkInterfaceImpl::NetworkInterfaceImpl(std::unique_ptr<NetworkConnectionHook> hook) : NetworkInterface(), _pool(makeOptions()), - _inShutdown(false), _commandRunner(kMessagingPortKeepOpen, std::move(hook)) {} NetworkInterfaceImpl::~NetworkInterfaceImpl() {} @@ -80,7 +79,7 @@ std::string NetworkInterfaceImpl::getDiagnosticString() { str::stream output; output << "NetworkImpl"; output << " threads:" << poolStats.numThreads; - output << " inShutdown:" << inShutdown(); + output << " inShutdown:" << _inShutdown; output << " active:" << _numActiveNetworkRequests; output << " pending:" << _pending.size(); output << " execRunable:" << _isExecutorRunnable; @@ -90,7 +89,9 @@ std::string NetworkInterfaceImpl::getDiagnosticString() { void NetworkInterfaceImpl::appendConnectionStats(ConnectionPoolStats* stats) const {} void NetworkInterfaceImpl::startup() { - invariant(!inShutdown()); + stdx::unique_lock<stdx::mutex> lk(_mutex); + invariant(!_inShutdown); + lk.unlock(); _commandRunner.startup(); _pool.startup(); @@ -99,7 +100,7 @@ void NetworkInterfaceImpl::startup() { void NetworkInterfaceImpl::shutdown() { stdx::unique_lock<stdx::mutex> lk(_mutex); - _inShutdown.store(true); + _inShutdown = true; _hasPending.notify_all(); _newAlarmReady.notify_all(); lk.unlock(); @@ -109,10 +110,6 @@ void NetworkInterfaceImpl::shutdown() { _commandRunner.shutdown(); } -bool NetworkInterfaceImpl::inShutdown() const { - return _inShutdown.load(); -} - void NetworkInterfaceImpl::signalWorkAvailable() { stdx::lock_guard<stdx::mutex> lk(_mutex); _signalWorkAvailable_inlock(); @@ -164,25 +161,17 @@ void NetworkInterfaceImpl::_runOneCommand() { _signalWorkAvailable_inlock(); } -Status NetworkInterfaceImpl::startCommand(const TaskExecutor::CallbackHandle& cbHandle, - const RemoteCommandRequest& request, - const RemoteCommandCompletionFn& onFinish) { - if (inShutdown()) { - return {ErrorCodes::ShutdownInProgress, "NetworkInterfaceImpl shutdown in progress"}; - } - +void NetworkInterfaceImpl::startCommand(const TaskExecutor::CallbackHandle& cbHandle, + const RemoteCommandRequest& request, + const RemoteCommandCompletionFn& onFinish) { LOG(2) << "Scheduling " << request.cmdObj.firstElementFieldName() << " to " << request.target; - stdx::lock_guard<stdx::mutex> lk(_mutex); - _pending.push_back(CommandData()); CommandData& cd = _pending.back(); cd.cbHandle = cbHandle; cd.request = request; cd.onFinish = onFinish; fassert(28730, _pool.schedule([this]() -> void { _runOneCommand(); })); - - return Status::OK(); } void NetworkInterfaceImpl::cancelCommand(const TaskExecutor::CallbackHandle& cbHandle) { @@ -214,20 +203,13 @@ std::string NetworkInterfaceImpl::getHostName() { return getHostNameCached(); } -Status NetworkInterfaceImpl::setAlarm(Date_t when, const stdx::function<void()>& action) { - if (inShutdown()) { - return {ErrorCodes::ShutdownInProgress, "NetworkInterfaceImpl shutdown in progress"}; - } - +void NetworkInterfaceImpl::setAlarm(Date_t when, const stdx::function<void()>& action) { stdx::unique_lock<stdx::mutex> lk(_mutex); - const bool notify = _alarms.empty() || _alarms.top().when > when; _alarms.emplace(when, action); if (notify) { _newAlarmReady.notify_all(); } - - return Status::OK(); } bool NetworkInterfaceImpl::onNetworkThread() { @@ -236,7 +218,7 @@ bool NetworkInterfaceImpl::onNetworkThread() { void NetworkInterfaceImpl::_processAlarms() { stdx::unique_lock<stdx::mutex> lk(_mutex); - while (!inShutdown()) { + while (!_inShutdown) { if (_alarms.empty()) { _newAlarmReady.wait(lk); } else if (now() < _alarms.top().when) { |