diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp index 614090d88fa..688b504af15 100644 --- a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp +++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp @@ -83,7 +83,6 @@ #include "mongo/db/s/config/index_on_config.h" #include "mongo/db/s/config/sharding_catalog_manager.h" #include "mongo/db/s/migration_util.h" -#include "mongo/db/s/periodic_balancer_config_refresher.h" #include "mongo/db/s/periodic_sharded_index_consistency_checker.h" #include "mongo/db/s/resharding/resharding_donor_recipient_common.h" #include "mongo/db/s/shard_local.h" @@ -832,7 +831,6 @@ void ReplicationCoordinatorExternalStateImpl::_shardingOnStepDownHook() { TransactionCoordinatorService::get(_service)->onStepDown(); } if (ShardingState::get(_service)->enabled()) { - PeriodicBalancerConfigRefresher::get(_service).onStepDown(); CatalogCacheLoader::get(_service).onStepDown(); if (serverGlobalParams.clusterRole != ClusterRole::ConfigServer) { @@ -959,7 +957,6 @@ void ReplicationCoordinatorExternalStateImpl::_shardingOnTransitionToPrimaryHook } fassert(40107, status); - PeriodicBalancerConfigRefresher::get(_service).onStepUp(_service); CatalogCacheLoader::get(_service).onStepUp(); if (serverGlobalParams.clusterRole != ClusterRole::ConfigServer) { diff --git a/src/mongo/db/s/SConscript b/src/mongo/db/s/SConscript index cced8ce114a..91566b7e3f6 100644 --- a/src/mongo/db/s/SConscript +++ b/src/mongo/db/s/SConscript @@ -191,7 +191,6 @@ env.Library( 'move_timing_helper.cpp', 'namespace_metadata_change_notifications.cpp', 'op_observer_sharding_impl.cpp', - 'periodic_balancer_config_refresher.cpp', 'periodic_sharded_index_consistency_checker.cpp', 'query_analysis_coordinator.cpp', 'query_analysis_op_observer.cpp', diff --git a/src/mongo/db/s/periodic_balancer_config_refresher.cpp b/src/mongo/db/s/periodic_balancer_config_refresher.cpp deleted file mode 100644 index 089f721350c..00000000000 --- a/src/mongo/db/s/periodic_balancer_config_refresher.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Copyright (C) 2018-present MongoDB, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the Server Side Public License, version 1, - * as published by MongoDB, Inc. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * Server Side Public License for more details. - * - * You should have received a copy of the Server Side Public License - * along with this program. If not, see - * . - * - * As a special exception, the copyright holders give permission to link the - * code of portions of this program with the OpenSSL library under certain - * conditions as described in each individual source file and distribute - * linked combinations including the program with the OpenSSL library. You - * must comply with the Server Side Public License in all respects for - * all of the code used other than as permitted herein. If you modify file(s) - * with this exception, you may extend this exception to your version of the - * file(s), but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. If you delete this - * exception statement from all source files in the program, then also delete - * it in the license file. - */ - - -#include "mongo/platform/basic.h" - -#include "mongo/db/s/periodic_balancer_config_refresher.h" - -#include "mongo/db/operation_context.h" -#include "mongo/db/service_context.h" -#include "mongo/logv2/log.h" -#include "mongo/s/balancer_configuration.h" -#include "mongo/s/grid.h" - -#define MONGO_LOGV2_DEFAULT_COMPONENT ::mongo::logv2::LogComponent::kSharding - - -namespace mongo { - -namespace { - -const auto getPeriodicBalancerConfigRefresher = - ServiceContext::declareDecoration(); - -PeriodicJobAnchor launchBalancerConfigRefresher(ServiceContext* serviceContext) { - auto periodicRunner = serviceContext->getPeriodicRunner(); - invariant(periodicRunner); - - PeriodicRunner::PeriodicJob job( - "PeriodicBalancerConfigRefresher", - [](Client* client) { - auto opCtx = client->makeOperationContext(); - - const auto balancerConfig = Grid::get(opCtx.get())->getBalancerConfiguration(); - invariant(balancerConfig); - - Status status = balancerConfig->refreshAndCheck(opCtx.get()); - if (!status.isOK()) { - LOGV2(22048, - "Failed to refresh balancer configuration: {error}", - "Failed to refresh balancer configuration", - "error"_attr = redact(status)); - } - }, - Seconds(30)); - auto balancerConfigRefresher = periodicRunner->makeJob(std::move(job)); - balancerConfigRefresher.start(); - return balancerConfigRefresher; -} - -} // namespace - -PeriodicBalancerConfigRefresher& PeriodicBalancerConfigRefresher::get(OperationContext* opCtx) { - return get(opCtx->getServiceContext()); -} - -PeriodicBalancerConfigRefresher& PeriodicBalancerConfigRefresher::get( - ServiceContext* serviceContext) { - return getPeriodicBalancerConfigRefresher(serviceContext); -} - -void PeriodicBalancerConfigRefresher::onShardingInitialization(ServiceContext* serviceContext, - bool isPrimary) { - _isPrimary = isPrimary; - // This function is called on sharding state initialization, so go ahead - // and start up the balancer config refresher task if we're a primary. - if (isPrimary && !_balancerConfigRefresher.isValid()) { - _balancerConfigRefresher = launchBalancerConfigRefresher(serviceContext); - } -} -void PeriodicBalancerConfigRefresher::onStepUp(ServiceContext* serviceContext) { - if (!_isPrimary) { - _isPrimary = true; - // If this is the first time we're stepping up, start a thread to periodically refresh the - // balancer configuration. - if (!_balancerConfigRefresher.isValid()) { - _balancerConfigRefresher = launchBalancerConfigRefresher(serviceContext); - } else { - // If we're stepping up again after having stepped down, just resume - // the existing task. - _balancerConfigRefresher.resume(); - } - } -} - -void PeriodicBalancerConfigRefresher::onStepDown() { - if (_isPrimary) { - _isPrimary = false; - invariant(_balancerConfigRefresher.isValid()); - // We don't need to be refreshing the balancer configuration unless we're primary. - _balancerConfigRefresher.pause(); - } -} - -} // namespace mongo diff --git a/src/mongo/db/s/periodic_balancer_config_refresher.h b/src/mongo/db/s/periodic_balancer_config_refresher.h deleted file mode 100644 index a331f9cfab5..00000000000 --- a/src/mongo/db/s/periodic_balancer_config_refresher.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright (C) 2018-present MongoDB, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the Server Side Public License, version 1, - * as published by MongoDB, Inc. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * Server Side Public License for more details. - * - * You should have received a copy of the Server Side Public License - * along with this program. If not, see - * . - * - * As a special exception, the copyright holders give permission to link the - * code of portions of this program with the OpenSSL library under certain - * conditions as described in each individual source file and distribute - * linked combinations including the program with the OpenSSL library. You - * must comply with the Server Side Public License in all respects for - * all of the code used other than as permitted herein. If you modify file(s) - * with this exception, you may extend this exception to your version of the - * file(s), but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. If you delete this - * exception statement from all source files in the program, then also delete - * it in the license file. - */ - -#pragma once - -#include "mongo/util/periodic_runner.h" - -namespace mongo { - -class OperationContext; -class ServiceContext; - -class PeriodicBalancerConfigRefresher final { - PeriodicBalancerConfigRefresher(const PeriodicBalancerConfigRefresher&) = delete; - PeriodicBalancerConfigRefresher& operator=(const PeriodicBalancerConfigRefresher&) = delete; - -public: - PeriodicBalancerConfigRefresher() = default; - ~PeriodicBalancerConfigRefresher() = default; - - PeriodicBalancerConfigRefresher(PeriodicBalancerConfigRefresher&& source) = delete; - PeriodicBalancerConfigRefresher& operator=(PeriodicBalancerConfigRefresher&& other) = delete; - - /** - * Obtains the service-wide chunk PeriodicBalancerConfigRefresher instance. - */ - static PeriodicBalancerConfigRefresher& get(OperationContext* opCtx); - static PeriodicBalancerConfigRefresher& get(ServiceContext* serviceContext); - - - /** - * Sets the mode to either primary or secondary. If it is primary, starts a - * periodic task to refresh the balancer configuration. The - * PeriodicBalancerConfigRefresher is only active when primary. - */ - void onShardingInitialization(ServiceContext* serviceContext, bool isPrimary); - - /** - * Invoked when the shard server primary enters the 'PRIMARY' state to - * trigger the start of the periodic refresh task. - */ - void onStepUp(ServiceContext* serviceContext); - - /** - * Invoked when this node which is currently serving as a 'PRIMARY' steps down. - * - * Pauses the periodic refresh until subsequent step up. This method might - * be called multiple times in succession, which is what happens as a - * result of incomplete transition to primary so it is resilient to that. - */ - void onStepDown(); - -private: - bool _isPrimary{false}; - - // Periodic job for refreshing the balancer configuration - PeriodicJobAnchor _balancerConfigRefresher; -}; -} // namespace mongo diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp index 63818369215..89f7e69ed52 100644 --- a/src/mongo/db/s/sharding_initialization_mongod.cpp +++ b/src/mongo/db/s/sharding_initialization_mongod.cpp @@ -50,7 +50,6 @@ #include "mongo/db/ops/update.h" #include "mongo/db/repl/replication_coordinator.h" #include "mongo/db/s/config/sharding_catalog_manager.h" -#include "mongo/db/s/periodic_balancer_config_refresher.h" #include "mongo/db/s/read_only_catalog_cache_loader.h" #include "mongo/db/s/shard_local.h" #include "mongo/db/s/shard_server_catalog_cache_loader.h" @@ -720,9 +719,6 @@ void ShardingInitializationMongoD::_initializeShardingEnvironmentOnShardServer( opCtx, isReplSet && isStandaloneOrPrimary); } - PeriodicBalancerConfigRefresher::get(opCtx).onShardingInitialization(service, - isStandaloneOrPrimary); - LOGV2(22071, "Finished initializing sharding components for {memberState} node.", "Finished initializing sharding components",