summaryrefslogtreecommitdiff
path: root/src/mongo/executor/network_interface_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/executor/network_interface_impl.cpp')
-rw-r--r--src/mongo/executor/network_interface_impl.cpp38
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) {