diff options
author | Henrik Edin <henrik.edin@mongodb.com> | 2020-07-23 09:00:51 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-07-23 13:28:31 +0000 |
commit | 15d23a48c8a8767ce3c5fc5165d5888608a454b4 (patch) | |
tree | a5f1ac9072d089aa93a334ac1a0eef7940e26ac7 /src/mongo/transport | |
parent | 86c0690f017f6703eefd10ade29262898cd8435c (diff) | |
download | mongo-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.h | 22 | ||||
-rw-r--r-- | src/mongo/transport/service_executor.h | 21 | ||||
-rw-r--r-- | src/mongo/transport/service_executor_fixed.h | 9 | ||||
-rw-r--r-- | src/mongo/transport/service_executor_test.cpp | 24 | ||||
-rw-r--r-- | src/mongo/transport/session.h | 5 | ||||
-rw-r--r-- | src/mongo/transport/session_asio.h | 8 |
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(); |