summaryrefslogtreecommitdiff
path: root/src/mongo/s/config.h
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-02-27 17:05:49 -0500
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2017-03-12 16:28:30 -0400
commitae2518adace4ba7ed6a16eba6943bff6ea4ade10 (patch)
treece1879e6aa1cec6f16dcd6d7596834d4a4b31ad6 /src/mongo/s/config.h
parent04b8ed12d08affcb06e88c8a2b4398628ae0aa62 (diff)
downloadmongo-ae2518adace4ba7ed6a16eba6943bff6ea4ade10.tar.gz
SERVER-22611 Sharding catalog cache refactor
Diffstat (limited to 'src/mongo/s/config.h')
-rw-r--r--src/mongo/s/config.h146
1 files changed, 0 insertions, 146 deletions
diff --git a/src/mongo/s/config.h b/src/mongo/s/config.h
deleted file mode 100644
index bbd63cf3b3b..00000000000
--- a/src/mongo/s/config.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright (C) 2008-2015 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * 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
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * 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 GNU Affero General 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 <string>
-
-#include "mongo/db/repl/optime.h"
-#include "mongo/platform/atomic_word.h"
-#include "mongo/s/shard_id.h"
-#include "mongo/stdx/mutex.h"
-
-namespace mongo {
-
-class ChunkManager;
-struct CollectionInfo;
-class DatabaseType;
-class OperationContext;
-
-/**
- * Represents the cache entry for a database.
- */
-class DBConfig {
-public:
- DBConfig(const DatabaseType& dbt, repl::OpTime configOpTime);
- ~DBConfig();
-
- /**
- * The name of the database which this entry caches.
- */
- const std::string& name() const {
- return _name;
- }
-
- ShardId getPrimaryId();
-
- /**
- * Returns whether 'enableSharding' has been called for this database.
- */
- bool isShardingEnabled() const {
- return _shardingEnabled;
- }
-
- /**
- * Removes the specified namespace from the set of collections under this database entry so that
- * from then onwards it will be treated as unsharded.
- *
- * Note that this method doesn't do any writes to the config metadata, but simply drops the
- * specified namespace from the cache.
- */
- void markNSNotSharded(const std::string& ns);
-
- /**
- * @return whether or not the 'ns' collection is partitioned
- */
- bool isSharded(const std::string& ns);
-
- std::shared_ptr<ChunkManager> getChunkManager(OperationContext* opCtx,
- const std::string& ns,
- bool reload = false,
- bool forceReload = false);
- std::shared_ptr<ChunkManager> getChunkManagerIfExists(OperationContext* opCtx,
- const std::string& ns,
- bool reload = false,
- bool forceReload = false);
-
- /**
- * Returns true if it is successful at loading the DBConfig, false if the database is not found,
- * and throws on all other errors.
- */
- bool load(OperationContext* opCtx);
-
-protected:
- typedef std::map<std::string, CollectionInfo> CollectionInfoMap;
- typedef AtomicUInt64::WordType Counter;
-
- /**
- * Returns true if it is successful at loading the DBConfig, false if the database is not found,
- * and throws on all other errors.
- * Also returns true without reloading if reloadIteration is not equal to the _reloadCount.
- * This is to avoid multiple threads attempting to reload do duplicate work.
- */
- bool _loadIfNeeded(OperationContext* opCtx, Counter reloadIteration);
-
- // All member variables are labeled with one of the following codes indicating the
- // synchronization rules for accessing them.
- //
- // (L) Must hold _lock for access.
- // (S) Self synchronizing, no explicit locking needed.
- //
- // Mutex lock order:
- // _hitConfigServerLock -> _lock
- //
-
- // Name of the database which this entry caches
- const std::string _name;
-
- // Whether sharding is enabled for this database
- const bool _shardingEnabled;
-
- // Primary shard id
- ShardId _primaryId; // (L)
-
- // Set of collections and lock to protect access
- stdx::mutex _lock;
- CollectionInfoMap _collections; // (L)
-
- // OpTime of config server when the database definition was loaded.
- repl::OpTime _configOpTime; // (L)
-
- // Ensures that only one thread at a time loads collection configuration data from
- // the config server
- stdx::mutex _hitConfigServerLock;
-
- // Increments every time this performs a full reload. Since a full reload can take a very
- // long time for very large clusters, this can be used to minimize duplicate work when multiple
- // threads tries to perform full rerload at roughly the same time.
- AtomicUInt64 _reloadCount; // (S)
-};
-
-} // namespace mongo