diff options
Diffstat (limited to 'src/mongo/s/grid.cpp')
-rw-r--r-- | src/mongo/s/grid.cpp | 120 |
1 files changed, 58 insertions, 62 deletions
diff --git a/src/mongo/s/grid.cpp b/src/mongo/s/grid.cpp index d687a7f8129..e36e1efac54 100644 --- a/src/mongo/s/grid.cpp +++ b/src/mongo/s/grid.cpp @@ -41,87 +41,83 @@ namespace mongo { - Grid::Grid() : _allowLocalShard(true) { +Grid::Grid() : _allowLocalShard(true) {} - } - - void Grid::init(std::unique_ptr<CatalogManager> catalogManager, - std::unique_ptr<ShardRegistry> shardRegistry) { +void Grid::init(std::unique_ptr<CatalogManager> catalogManager, + std::unique_ptr<ShardRegistry> shardRegistry) { + invariant(!_catalogManager); + invariant(!_catalogCache); + invariant(!_shardRegistry); - invariant(!_catalogManager); - invariant(!_catalogCache); - invariant(!_shardRegistry); + _catalogManager = std::move(catalogManager); + _catalogCache = stdx::make_unique<CatalogCache>(_catalogManager.get()); + _shardRegistry = std::move(shardRegistry); +} - _catalogManager = std::move(catalogManager); - _catalogCache = stdx::make_unique<CatalogCache>(_catalogManager.get()); - _shardRegistry = std::move(shardRegistry); +StatusWith<std::shared_ptr<DBConfig>> Grid::implicitCreateDb(const std::string& dbName) { + auto status = catalogCache()->getDatabase(dbName); + if (status.isOK()) { + return status; } - StatusWith<std::shared_ptr<DBConfig>> Grid::implicitCreateDb(const std::string& dbName) { - auto status = catalogCache()->getDatabase(dbName); - if (status.isOK()) { - return status; + if (status == ErrorCodes::DatabaseNotFound) { + auto statusCreateDb = catalogManager()->createDatabase(dbName); + if (statusCreateDb.isOK() || statusCreateDb == ErrorCodes::NamespaceExists) { + return catalogCache()->getDatabase(dbName); } - if (status == ErrorCodes::DatabaseNotFound) { - auto statusCreateDb = catalogManager()->createDatabase(dbName); - if (statusCreateDb.isOK() || statusCreateDb == ErrorCodes::NamespaceExists) { - return catalogCache()->getDatabase(dbName); - } + return statusCreateDb; + } - return statusCreateDb; - } + return status; +} - return status; - } +bool Grid::allowLocalHost() const { + return _allowLocalShard; +} - bool Grid::allowLocalHost() const { - return _allowLocalShard; +void Grid::setAllowLocalHost(bool allow) { + _allowLocalShard = allow; +} + +/* + * Returns whether balancing is enabled, with optional namespace "ns" parameter for balancing on a particular + * collection. + */ +bool Grid::shouldBalance(const SettingsType& balancerSettings) const { + if (balancerSettings.isBalancerStoppedSet() && balancerSettings.getBalancerStopped()) { + return false; } - void Grid::setAllowLocalHost( bool allow ) { - _allowLocalShard = allow; + if (balancerSettings.isBalancerActiveWindowSet()) { + boost::posix_time::ptime now = boost::posix_time::second_clock::local_time(); + return balancerSettings.inBalancingWindow(now); } - /* - * Returns whether balancing is enabled, with optional namespace "ns" parameter for balancing on a particular - * collection. - */ - bool Grid::shouldBalance(const SettingsType& balancerSettings) const { - if (balancerSettings.isBalancerStoppedSet() && balancerSettings.getBalancerStopped()) { - return false; - } + return true; +} - if (balancerSettings.isBalancerActiveWindowSet()) { - boost::posix_time::ptime now = boost::posix_time::second_clock::local_time(); - return balancerSettings.inBalancingWindow(now); - } +bool Grid::getConfigShouldBalance() const { + auto balSettingsResult = grid.catalogManager()->getGlobalSettings(SettingsType::BalancerDocKey); + if (!balSettingsResult.isOK()) { + warning() << balSettingsResult.getStatus(); + return false; + } + SettingsType balSettings = balSettingsResult.getValue(); + if (!balSettings.isKeySet()) { + // Balancer settings doc does not exist. Default to yes. return true; } - bool Grid::getConfigShouldBalance() const { - auto balSettingsResult = - grid.catalogManager()->getGlobalSettings(SettingsType::BalancerDocKey); - if (!balSettingsResult.isOK()) { - warning() << balSettingsResult.getStatus(); - return false; - } - SettingsType balSettings = balSettingsResult.getValue(); - - if (!balSettings.isKeySet()) { - // Balancer settings doc does not exist. Default to yes. - return true; - } - - return shouldBalance(balSettings); - } + return shouldBalance(balSettings); +} - void Grid::clearForUnitTests() { - _catalogManager.reset(); - _catalogCache.reset(); - _shardRegistry.reset(); - } +void Grid::clearForUnitTests() { + _catalogManager.reset(); + _catalogCache.reset(); + _shardRegistry.reset(); +} - Grid grid; +Grid grid; } |