diff options
author | Joanna Huang <joannahuang@Joannas-MacBook-Pro.local> | 2017-07-18 13:31:11 -0400 |
---|---|---|
committer | Joanna Huang <joannahuang@Joannas-MacBook-Pro.local> | 2017-07-27 11:00:00 -0400 |
commit | 029669a994f92a2f0fe57c5ed06edec871d372ab (patch) | |
tree | f769e8cf305faee1175e565f8d71a2706332904c /src/mongo/db/s/sharding_state.cpp | |
parent | 74c6b215bc40e1229368cf26434c512ec2e0d433 (diff) | |
download | mongo-029669a994f92a2f0fe57c5ed06edec871d372ab.tar.gz |
SERVER-30096 Add stepdown/stepup logic to ChunkSplitter
Diffstat (limited to 'src/mongo/db/s/sharding_state.cpp')
-rw-r--r-- | src/mongo/db/s/sharding_state.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mongo/db/s/sharding_state.cpp b/src/mongo/db/s/sharding_state.cpp index 693b9085684..fd868900bdd 100644 --- a/src/mongo/db/s/sharding_state.cpp +++ b/src/mongo/db/s/sharding_state.cpp @@ -113,7 +113,8 @@ void updateShardIdentityConfigStringCB(const string& setName, const string& newC } // namespace ShardingState::ShardingState() - : _initializationState(static_cast<uint32_t>(InitializationState::kNew)), + : _chunkSplitter(stdx::make_unique<ChunkSplitter>()), + _initializationState(static_cast<uint32_t>(InitializationState::kNew)), _initializationStatus(Status(ErrorCodes::InternalError, "Uninitialized value")), _globalInit(&initializeGlobalShardingStateForMongod) {} @@ -204,6 +205,14 @@ CollectionShardingState* ShardingState::getNS(const std::string& ns, OperationCo return it->second.get(); } +void ShardingState::initiateChunkSplitter() { + _chunkSplitter->initiateChunkSplitter(); +} + +void ShardingState::interruptChunkSplitter() { + _chunkSplitter->interruptChunkSplitter(); +} + void ShardingState::markCollectionsNotShardedAtStepdown() { stdx::lock_guard<stdx::mutex> lk(_mutex); for (auto& coll : _collections) { @@ -324,7 +333,8 @@ Status ShardingState::initializeFromShardIdentity(OperationContext* opCtx, &ShardRegistry::replicaSetChangeShardRegistryUpdateHook); ReplicaSetMonitor::setAsynchronousConfigChangeHook(&updateShardIdentityConfigStringCB); - // Determine primary/secondary/standalone state in order to set it on the CatalogCache. + // Determine primary/secondary/standalone state in order to properly initialize sharding + // components. auto replCoord = repl::ReplicationCoordinator::get(opCtx); bool isReplSet = replCoord->getReplicationMode() == repl::ReplicationCoordinator::modeReplSet; @@ -333,6 +343,7 @@ Status ShardingState::initializeFromShardIdentity(OperationContext* opCtx, repl::MemberState::RS_PRIMARY); Grid::get(opCtx)->catalogCache()->initializeReplicaSetRole(isStandaloneOrPrimary); + _chunkSplitter->setReplicaSetMode(isStandaloneOrPrimary); log() << "initialized sharding components for " << (isStandaloneOrPrimary ? "primary" : "secondary") << " node."; |