diff options
author | Christopher Caplinger <christopher.caplinger@mongodb.com> | 2022-06-30 15:26:44 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-06-30 16:49:14 +0000 |
commit | f408f468b0edfa6208fc0c09d6ec3b18e01fe43c (patch) | |
tree | f7973ecbf78643ec45d81ea48cc9c4a0c44acdc2 | |
parent | dbef08b92565ffc372b6eef21a1ea11a45c964c1 (diff) | |
download | mongo-f408f468b0edfa6208fc0c09d6ec3b18e01fe43c.tar.gz |
SERVER-67574: Remove noexcept from _doStartup_inlock
-rw-r--r-- | src/mongo/db/repl/abstract_async_component.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/abstract_async_component.h | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/abstract_async_component_test.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_fetcher.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_fetcher.h | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_fetcher_mock.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_fetcher_mock.h | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/tenant_oplog_applier.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/repl/tenant_oplog_applier.h | 2 | ||||
-rw-r--r-- | src/mongo/db/repl/tenant_oplog_batcher.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/tenant_oplog_batcher.h | 2 |
11 files changed, 20 insertions, 27 deletions
diff --git a/src/mongo/db/repl/abstract_async_component.cpp b/src/mongo/db/repl/abstract_async_component.cpp index 3ba88281f6e..48d27994eed 100644 --- a/src/mongo/db/repl/abstract_async_component.cpp +++ b/src/mongo/db/repl/abstract_async_component.cpp @@ -86,11 +86,11 @@ Status AbstractAsyncComponent::startup() noexcept { str::stream() << _componentName << " completed"); } - auto status = _doStartup_inlock(); - - if (!status.isOK()) { + try { + _doStartup_inlock(); + } catch (const DBException& ex) { _state = State::kComplete; - return status; + return ex.toStatus(); } return Status::OK(); diff --git a/src/mongo/db/repl/abstract_async_component.h b/src/mongo/db/repl/abstract_async_component.h index 6400a5961a7..1059e9865f9 100644 --- a/src/mongo/db/repl/abstract_async_component.h +++ b/src/mongo/db/repl/abstract_async_component.h @@ -183,7 +183,6 @@ private: * Invoked by startup() to run startup procedure after a successful transition from PreStart to * Running. * Invoked at most once by AbstractAsyncComponent. - * May not throw exceptions. * * If _doStartup_inlock() fails, startup() will transition this component from Running to * Complete. Subsequent startup() attempts will return an IllegalOperation error. @@ -195,7 +194,7 @@ private: * It is the responsibility of the implementation to transition the component state to Complete * by calling _transitionToComplete_inlock() once the component has finished its processing. */ - virtual Status _doStartup_inlock() noexcept = 0; + virtual void _doStartup_inlock() = 0; /** * Runs shutdown procedure after a successful transition from Running to ShuttingDown. diff --git a/src/mongo/db/repl/abstract_async_component_test.cpp b/src/mongo/db/repl/abstract_async_component_test.cpp index d99967ed6be..a8ee5248bf6 100644 --- a/src/mongo/db/repl/abstract_async_component_test.cpp +++ b/src/mongo/db/repl/abstract_async_component_test.cpp @@ -93,7 +93,7 @@ public: void shutdownComponent_forTest(const std::unique_ptr<MockAsyncComponent>& component); private: - Status _doStartup_inlock() noexcept override; + void _doStartup_inlock() override; void _doShutdown_inlock() noexcept override; void _preJoin() noexcept override {} Mutex* _getMutex() noexcept override; @@ -102,7 +102,7 @@ private: Mutex _mutex = MONGO_MAKE_LATCH("MockAsyncComponent::_mutex"); public: - // Returned by _doStartup_inlock(). Override for testing. + // Asserted to be OK by _doStartup_inlock(). Override for testing. Status doStartupResult = Status::OK(); // Set to true when _doStartup_inlock() is called. @@ -154,9 +154,9 @@ void MockAsyncComponent::shutdownComponent_forTest( _shutdownComponent(component); } -Status MockAsyncComponent::_doStartup_inlock() noexcept { +void MockAsyncComponent::_doStartup_inlock() { doStartupCalled = true; - return doStartupResult; + uassertStatusOK(doStartupResult); } void MockAsyncComponent::_doShutdown_inlock() noexcept {} diff --git a/src/mongo/db/repl/oplog_fetcher.cpp b/src/mongo/db/repl/oplog_fetcher.cpp index a08a241a2b9..6a1ffcfc5fc 100644 --- a/src/mongo/db/repl/oplog_fetcher.cpp +++ b/src/mongo/db/repl/oplog_fetcher.cpp @@ -206,8 +206,8 @@ void OplogFetcher::setConnection(std::unique_ptr<DBClientConnection>&& _connecte _conn = std::move(_connectedClient); } -Status OplogFetcher::_doStartup_inlock() noexcept { - return _scheduleWorkAndSaveHandle_inlock( +void OplogFetcher::_doStartup_inlock() { + uassertStatusOK(_scheduleWorkAndSaveHandle_inlock( [this](const executor::TaskExecutor::CallbackArgs& args) { // Tests use this failpoint to prevent the oplog fetcher from starting. If those // tests fail and the oplog fetcher is canceled, we want to continue so we see @@ -218,7 +218,7 @@ Status OplogFetcher::_doStartup_inlock() noexcept { _runQuery(args); }, &_runQueryHandle, - "_runQuery"); + "_runQuery")); } void OplogFetcher::_doShutdown_inlock() noexcept { diff --git a/src/mongo/db/repl/oplog_fetcher.h b/src/mongo/db/repl/oplog_fetcher.h index 2147eb9ebde..b992f758aa2 100644 --- a/src/mongo/db/repl/oplog_fetcher.h +++ b/src/mongo/db/repl/oplog_fetcher.h @@ -326,7 +326,7 @@ private: /** * Schedules the _runQuery function to run in a separate thread. */ - Status _doStartup_inlock() noexcept override; + void _doStartup_inlock() override; /** * Shuts down the DBClientCursor and DBClientConnection. Uses the connection's diff --git a/src/mongo/db/repl/oplog_fetcher_mock.cpp b/src/mongo/db/repl/oplog_fetcher_mock.cpp index fc9a8f91d88..ee51310c925 100644 --- a/src/mongo/db/repl/oplog_fetcher_mock.cpp +++ b/src/mongo/db/repl/oplog_fetcher_mock.cpp @@ -171,7 +171,7 @@ void OplogFetcherMock::waitForshutdown() { } } -Status OplogFetcherMock::_doStartup_inlock() noexcept { +void OplogFetcherMock::_doStartup_inlock() { // Create a thread that waits on the _finishPromise and call _finishCallback once with the // finish status. This is to synchronize the OplogFetcher shutdown between the test thread and // the OplogFetcher's owner. For example, the OplogFetcher could be shut down by the test thread @@ -189,7 +189,6 @@ Status OplogFetcherMock::_doStartup_inlock() noexcept { auto status = future.getNoThrow(); _finishCallback(status); }); - return Status::OK(); } void OplogFetcherMock::_doShutdown_inlock() noexcept { diff --git a/src/mongo/db/repl/oplog_fetcher_mock.h b/src/mongo/db/repl/oplog_fetcher_mock.h index 09e9d2f542f..e8d428cd463 100644 --- a/src/mongo/db/repl/oplog_fetcher_mock.h +++ b/src/mongo/db/repl/oplog_fetcher_mock.h @@ -76,7 +76,7 @@ public: private: // =============== AbstractAsyncComponent overrides ================ - Status _doStartup_inlock() noexcept override; + void _doStartup_inlock() override; void _doShutdown_inlock() noexcept override; diff --git a/src/mongo/db/repl/tenant_oplog_applier.cpp b/src/mongo/db/repl/tenant_oplog_applier.cpp index e42b4e6325f..169e51888f3 100644 --- a/src/mongo/db/repl/tenant_oplog_applier.cpp +++ b/src/mongo/db/repl/tenant_oplog_applier.cpp @@ -128,13 +128,10 @@ void TenantOplogApplier::setCloneFinishedRecipientOpTime(OpTime cloneFinishedRec _cloneFinishedRecipientOpTime = cloneFinishedRecipientOpTime; } -Status TenantOplogApplier::_doStartup_inlock() noexcept { +void TenantOplogApplier::_doStartup_inlock() { _oplogBatcher = std::make_shared<TenantOplogBatcher>( _migrationUuid, _oplogBuffer, _executor, _resumeBatchingTs, _startApplyingAfterOpTime); - auto status = _oplogBatcher->startup(); - if (!status.isOK()) - return status; - + uassertStatusOK(_oplogBatcher->startup()); auto fut = _oplogBatcher->getNextBatch( TenantOplogBatcher::BatchLimits(std::size_t(tenantApplierBatchSizeBytes.load()), std::size_t(tenantApplierBatchSizeOps.load()))); @@ -147,7 +144,6 @@ Status TenantOplogApplier::_doStartup_inlock() noexcept { invariant(_shouldStopApplying(status)); }) .getAsync([](auto status) {}); - return Status::OK(); } void TenantOplogApplier::_setFinalStatusIfOk(WithLock, Status newStatus) { diff --git a/src/mongo/db/repl/tenant_oplog_applier.h b/src/mongo/db/repl/tenant_oplog_applier.h index 330e028cce2..db50201afad 100644 --- a/src/mongo/db/repl/tenant_oplog_applier.h +++ b/src/mongo/db/repl/tenant_oplog_applier.h @@ -113,7 +113,7 @@ public: Timestamp getResumeBatchingTs() const; private: - Status _doStartup_inlock() noexcept final; + void _doStartup_inlock() final; void _doShutdown_inlock() noexcept final; void _preJoin() noexcept final; void _finishShutdown(WithLock lk, Status status); diff --git a/src/mongo/db/repl/tenant_oplog_batcher.cpp b/src/mongo/db/repl/tenant_oplog_batcher.cpp index 3a6013e6f42..5870d581354 100644 --- a/src/mongo/db/repl/tenant_oplog_batcher.cpp +++ b/src/mongo/db/repl/tenant_oplog_batcher.cpp @@ -263,7 +263,7 @@ SemiFuture<TenantOplogBatch> TenantOplogBatcher::getNextBatch(BatchLimits limits return _scheduleNextBatch(lk, limits); } -Status TenantOplogBatcher::_doStartup_inlock() noexcept { +void TenantOplogBatcher::_doStartup_inlock() { LOGV2_DEBUG( 4885604, 1, "Tenant Oplog Batcher starting up", "component"_attr = _getComponentName()); if (!_resumeBatchingTs.isNull()) { @@ -287,7 +287,6 @@ Status TenantOplogBatcher::_doStartup_inlock() noexcept { "Tenant Oplog Batcher will resume batching from after timestamp", "timestamp"_attr = _resumeBatchingTs); } - return Status::OK(); } void TenantOplogBatcher::_doShutdown_inlock() noexcept { diff --git a/src/mongo/db/repl/tenant_oplog_batcher.h b/src/mongo/db/repl/tenant_oplog_batcher.h index 0b0e3f0e512..6f78faee0f7 100644 --- a/src/mongo/db/repl/tenant_oplog_batcher.h +++ b/src/mongo/db/repl/tenant_oplog_batcher.h @@ -101,7 +101,7 @@ private: void _pushEntry(OperationContext* opCtx, TenantOplogBatch* batch, OplogEntry&& op); - Status _doStartup_inlock() noexcept final; + void _doStartup_inlock() final; void _doShutdown_inlock() noexcept final; |