summaryrefslogtreecommitdiff
path: root/src/mongo/transport
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2020-07-23 09:00:51 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-07-23 13:28:31 +0000
commit15d23a48c8a8767ce3c5fc5165d5888608a454b4 (patch)
treea5f1ac9072d089aa93a334ac1a0eef7940e26ac7 /src/mongo/transport
parent86c0690f017f6703eefd10ade29262898cd8435c (diff)
downloadmongo-15d23a48c8a8767ce3c5fc5165d5888608a454b4.tar.gz
Revert "SERVER-49106 Add poll function to the ServiceExecutor API"
This reverts commit a3ed860ba4fbb9a662440c8e9608fef5fa6c8712.
Diffstat (limited to 'src/mongo/transport')
-rw-r--r--src/mongo/transport/mock_session.h22
-rw-r--r--src/mongo/transport/service_executor.h21
-rw-r--r--src/mongo/transport/service_executor_fixed.h9
-rw-r--r--src/mongo/transport/service_executor_test.cpp24
-rw-r--r--src/mongo/transport/session.h5
-rw-r--r--src/mongo/transport/session_asio.h8
6 files changed, 0 insertions, 89 deletions
diff --git a/src/mongo/transport/mock_session.h b/src/mongo/transport/mock_session.h
index 72d05aa3e66..d88a0af263e 100644
--- a/src/mongo/transport/mock_session.h
+++ b/src/mongo/transport/mock_session.h
@@ -29,11 +29,8 @@
#pragma once
-#include <list>
-
#include "mongo/base/checked_cast.h"
#include "mongo/config.h"
-#include "mongo/stdx/mutex.h"
#include "mongo/transport/session.h"
#include "mongo/transport/transport_layer_mock.h"
#include "mongo/util/net/hostandport.h"
@@ -103,22 +100,6 @@ public:
return Future<Message>::makeReady(sourceMessage());
}
- Future<void> waitForData() override {
- auto fp = makePromiseFuture<void>();
- stdx::lock_guard<Latch> lk(_waitForDataMutex);
- _waitForDataQueue.emplace_back(std::move(fp.promise));
- return std::move(fp.future);
- }
-
- void signalAvailableData() {
- stdx::lock_guard<Latch> lk(_waitForDataMutex);
- if (_waitForDataQueue.size() == 0)
- return;
- Promise<void> promise = std::move(_waitForDataQueue.front());
- _waitForDataQueue.pop_front();
- promise.emplaceValue();
- }
-
Status sinkMessage(Message message) override {
if (!_tl || _tl->inShutdown()) {
return TransportLayer::ShutdownStatus;
@@ -173,9 +154,6 @@ protected:
HostAndPort _local;
SockAddr _remoteAddr;
SockAddr _localAddr;
-
- mutable Mutex _waitForDataMutex = MONGO_MAKE_LATCH("MockSession::_waitForDataMutex");
- std::list<Promise<void>> _waitForDataQueue;
};
} // namespace transport
diff --git a/src/mongo/transport/service_executor.h b/src/mongo/transport/service_executor.h
index 50bed7c0267..859969efa66 100644
--- a/src/mongo/transport/service_executor.h
+++ b/src/mongo/transport/service_executor.h
@@ -34,12 +34,9 @@
#include "mongo/base/status.h"
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/platform/bitwise_enum_operators.h"
-#include "mongo/transport/session.h"
#include "mongo/transport/transport_mode.h"
-#include "mongo/util/assert_util.h"
#include "mongo/util/duration.h"
#include "mongo/util/functional.h"
-#include "mongo/util/future.h"
#include "mongo/util/out_of_line_executor.h"
namespace mongo {
@@ -98,24 +95,6 @@ public:
}
/*
- * Awaits the availability of incoming data for the specified session. On success, it will
- * schedule the callback on current executor. Otherwise, it will invoke the callback with a
- * non-okay status on the caller thread. The default implementation blocks the caller thread
- * until data is available for reading. Other extensions of "ServiceExecutor" (e.g.,
- * "ServiceExecutorFixed") may provide asynchronous variants.
- */
- virtual void runOnDataAvailable(Session* session,
- OutOfLineExecutor::Task onCompletionCallback) {
- invariant(session);
- try {
- session->waitForData().get();
- schedule(std::move(onCompletionCallback));
- } catch (DBException& e) {
- onCompletionCallback(e.toStatus());
- }
- }
-
- /*
* Stops and joins the ServiceExecutor. Any outstanding tasks will not be executed, and any
* associated callbacks waiting on I/O may get called with an error code.
*
diff --git a/src/mongo/transport/service_executor_fixed.h b/src/mongo/transport/service_executor_fixed.h
index c9f744defa4..127c3e5d24d 100644
--- a/src/mongo/transport/service_executor_fixed.h
+++ b/src/mongo/transport/service_executor_fixed.h
@@ -37,7 +37,6 @@
#include "mongo/stdx/condition_variable.h"
#include "mongo/stdx/thread.h"
#include "mongo/transport/service_executor.h"
-#include "mongo/util/assert_util.h"
#include "mongo/util/concurrency/thread_pool.h"
#include "mongo/util/hierarchical_acquisition.h"
@@ -59,14 +58,6 @@ public:
Status shutdown(Milliseconds timeout) override;
Status scheduleTask(Task task, ScheduleFlags flags) override;
- void runOnDataAvailable(Session* session,
- OutOfLineExecutor::Task onCompletionCallback) override {
- invariant(session);
- session->waitForData()
- .thenRunOn(shared_from_this())
- .getAsync(std::move(onCompletionCallback));
- }
-
Mode transportMode() const override {
return Mode::kSynchronous;
}
diff --git a/src/mongo/transport/service_executor_test.cpp b/src/mongo/transport/service_executor_test.cpp
index 59bed8cc568..eb1927da8aa 100644
--- a/src/mongo/transport/service_executor_test.cpp
+++ b/src/mongo/transport/service_executor_test.cpp
@@ -37,12 +37,10 @@
#include "mongo/bson/bsonobjbuilder.h"
#include "mongo/db/service_context.h"
#include "mongo/logv2/log.h"
-#include "mongo/transport/mock_session.h"
#include "mongo/transport/service_executor_fixed.h"
#include "mongo/transport/service_executor_gen.h"
#include "mongo/transport/service_executor_synchronous.h"
#include "mongo/transport/transport_layer.h"
-#include "mongo/transport/transport_layer_mock.h"
#include "mongo/unittest/barrier.h"
#include "mongo/unittest/death_test.h"
#include "mongo/unittest/unittest.h"
@@ -345,27 +343,5 @@ TEST_F(ServiceExecutorFixedFixture, ScheduleFailsAfterShutdown) {
schedulerThread->join();
}
-TEST_F(ServiceExecutorFixedFixture, RunTaskAfterWaitingForData) {
- auto tl = std::make_unique<TransportLayerMock>();
- auto session = tl->createSession();
-
- auto executor = startAndGetServiceExecutor();
-
- const auto mainThreadId = stdx::this_thread::get_id();
- AtomicWord<bool> ranOnDataAvailable{false};
- auto barrier = std::make_shared<unittest::Barrier>(2);
- executor->runOnDataAvailable(
- session.get(), [&ranOnDataAvailable, mainThreadId, barrier](Status) mutable -> void {
- ranOnDataAvailable.store(true);
- ASSERT(stdx::this_thread::get_id() != mainThreadId);
- barrier->countDownAndWait();
- });
-
- ASSERT(!ranOnDataAvailable.load());
- reinterpret_cast<MockSession*>(session.get())->signalAvailableData();
- barrier->countDownAndWait();
- ASSERT(ranOnDataAvailable.load());
-}
-
} // namespace
} // namespace mongo
diff --git a/src/mongo/transport/session.h b/src/mongo/transport/session.h
index 39595d8ed37..8f51cdc80e3 100644
--- a/src/mongo/transport/session.h
+++ b/src/mongo/transport/session.h
@@ -116,11 +116,6 @@ public:
virtual Future<Message> asyncSourceMessage(const BatonHandle& handle = nullptr) = 0;
/**
- * Asynchronously waits for the availability of incoming data.
- */
- virtual Future<void> waitForData() = 0;
-
- /**
* Sink (send) a Message to the remote host for this Session.
*
* Async version will keep the buffer alive until the operation completes.
diff --git a/src/mongo/transport/session_asio.h b/src/mongo/transport/session_asio.h
index 59778b57315..e2590153b9f 100644
--- a/src/mongo/transport/session_asio.h
+++ b/src/mongo/transport/session_asio.h
@@ -167,14 +167,6 @@ public:
return sourceMessageImpl(baton);
}
- Future<void> waitForData() override {
-#ifdef MONGO_CONFIG_SSL
- if (_sslSocket)
- return asio::async_read(*_sslSocket, asio::null_buffers(), UseFuture{}).ignoreValue();
-#endif
- return asio::async_read(_socket, asio::null_buffers(), UseFuture{}).ignoreValue();
- }
-
Status sinkMessage(Message message) override {
ensureSync();