summaryrefslogtreecommitdiff
path: root/src/mongo/s/cluster_identity_loader.cpp
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@mongodb.com>2016-08-24 15:56:55 -0400
committerSpencer T Brody <spencer@mongodb.com>2016-08-26 16:55:38 -0400
commit6bf9fd2e5a5f043b950cb77361be3c1ed7a7d0af (patch)
treedd6d2cdcf3d3ef2eee3d156b3417b116d2f5ef3b /src/mongo/s/cluster_identity_loader.cpp
parenta4a9a9ad29415239091db171e01f45677464f668 (diff)
downloadmongo-6bf9fd2e5a5f043b950cb77361be3c1ed7a7d0af.tar.gz
SERVER-25677 Clear cached clusterId if config.version document is rolled back.
Diffstat (limited to 'src/mongo/s/cluster_identity_loader.cpp')
-rw-r--r--src/mongo/s/cluster_identity_loader.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/s/cluster_identity_loader.cpp b/src/mongo/s/cluster_identity_loader.cpp
index dc2ae335f94..741a280ab4c 100644
--- a/src/mongo/s/cluster_identity_loader.cpp
+++ b/src/mongo/s/cluster_identity_loader.cpp
@@ -105,4 +105,16 @@ StatusWith<OID> ClusterIdentityLoader::_fetchClusterIdFromConfig(
return loadResult.getValue().getClusterId();
}
+void ClusterIdentityLoader::discardCachedClusterId() {
+ stdx::lock_guard<stdx::mutex> lk(_mutex);
+
+ if (_initializationState == InitializationState::kUninitialized) {
+ return;
+ }
+ invariant(_initializationState == InitializationState::kInitialized);
+ _lastLoadResult = {
+ Status{ErrorCodes::InternalError, "cluster ID never re-loaded after rollback"}};
+ _initializationState = InitializationState::kUninitialized;
+}
+
} // namespace mongo