summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/flush_database_cache_updates_command.cpp
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2022-03-10 09:14:47 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-03-10 10:00:45 +0000
commitd03d37af8b5ef60d828579e537ae0aab1f290719 (patch)
tree7d1ca1cf2e4db324be8a5ee2655c12f76e253023 /src/mongo/db/s/flush_database_cache_updates_command.cpp
parentdb137621456c0db1e8e2362c525e347433a0f43f (diff)
downloadmongo-d03d37af8b5ef60d828579e537ae0aab1f290719.tar.gz
SERVER-63327 Make the Stale* exception handling uniform in all code paths
Diffstat (limited to 'src/mongo/db/s/flush_database_cache_updates_command.cpp')
-rw-r--r--src/mongo/db/s/flush_database_cache_updates_command.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/mongo/db/s/flush_database_cache_updates_command.cpp b/src/mongo/db/s/flush_database_cache_updates_command.cpp
index a80192e7dd3..de95a293333 100644
--- a/src/mongo/db/s/flush_database_cache_updates_command.cpp
+++ b/src/mongo/db/s/flush_database_cache_updates_command.cpp
@@ -117,7 +117,7 @@ public:
"Can't call _flushDatabaseCacheUpdates if in read-only mode",
!storageGlobalParams.readOnly);
- auto& oss = OperationShardingState::get(opCtx);
+ boost::optional<SharedSemiFuture<void>> criticalSectionSignal;
{
AutoGetDb autoDb(opCtx, _dbName(), MODE_IS);
@@ -129,14 +129,12 @@ public:
// consistency guarantee.
const auto dss = DatabaseShardingState::get(opCtx, _dbName());
auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss);
-
- if (auto criticalSectionSignal = dss->getCriticalSectionSignal(
- ShardingMigrationCriticalSection::kRead, dssLock)) {
- oss.setMigrationCriticalSectionSignal(criticalSectionSignal);
- }
+ criticalSectionSignal =
+ dss->getCriticalSectionSignal(ShardingMigrationCriticalSection::kRead, dssLock);
}
- oss.waitForMigrationCriticalSectionSignal(opCtx);
+ if (criticalSectionSignal)
+ criticalSectionSignal->get(opCtx);
if (Base::request().getSyncFromConfig()) {
LOGV2_DEBUG(21981,
@@ -144,7 +142,7 @@ public:
"Forcing remote routing table refresh for {db}",
"Forcing remote routing table refresh",
"db"_attr = _dbName());
- forceDatabaseRefresh(opCtx, _dbName());
+ uassertStatusOK(onDbVersionMismatchNoExcept(opCtx, _dbName(), boost::none));
}
CatalogCacheLoader::get(opCtx).waitForDatabaseFlush(opCtx, _dbName());
@@ -162,21 +160,23 @@ public:
class FlushDatabaseCacheUpdatesCmd final
: public FlushDatabaseCacheUpdatesCmdBase<FlushDatabaseCacheUpdatesCmd> {
public:
- using Request = _flushDatabaseCacheUpdates;
+ using Request = FlushDatabaseCacheUpdates;
static bool supportsWriteConcern() {
return false;
}
+
} _flushDatabaseCacheUpdates;
class FlushDatabaseCacheUpdatesWithWriteConcernCmd final
: public FlushDatabaseCacheUpdatesCmdBase<FlushDatabaseCacheUpdatesWithWriteConcernCmd> {
public:
- using Request = _flushDatabaseCacheUpdatesWithWriteConcern;
+ using Request = FlushDatabaseCacheUpdatesWithWriteConcern;
static bool supportsWriteConcern() {
return true;
}
+
} _flushDatabaseCacheUpdatesWithWriteConcern;
} // namespace