summaryrefslogtreecommitdiff
path: root/s/balancer_policy.h
diff options
context:
space:
mode:
Diffstat (limited to 's/balancer_policy.h')
-rw-r--r--s/balancer_policy.h98
1 files changed, 0 insertions, 98 deletions
diff --git a/s/balancer_policy.h b/s/balancer_policy.h
deleted file mode 100644
index cef5aa64afc..00000000000
--- a/s/balancer_policy.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// @file balancer_policy.h
-
-/**
-* Copyright (C) 2010 10gen 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/>.
-*/
-
-#ifndef S_BALANCER_POLICY_HEADER
-#define S_BALANCER_POLICY_HEADER
-
-#include "../pch.h"
-
-namespace mongo {
-
- class BalancerPolicy {
- public:
- struct ChunkInfo;
-
- /**
- * Returns a suggested chunk to move whithin a collection's shards, given information about
- * space usage and number of chunks for that collection. If the policy doesn't recommend
- * moving, it returns NULL.
- *
- * @param ns is the collections namepace.
- * @param shardLimitMap is a map from shardId to an object that describes (for now) space
- * cap and usage. E.g.: { "maxSize" : <size_in_MB> , "usedSize" : <size_in_MB> }.
- * @param shardToChunksMap is a map from shardId to chunks that live there. A chunk's format
- * is { }.
- * @param balancedLastTime is the number of chunks effectively moved in the last round.
- * @returns NULL or ChunkInfo of the best move to make towards balacing the collection.
- */
- typedef map< string,BSONObj > ShardToLimitsMap;
- typedef map< string,vector<BSONObj> > ShardToChunksMap;
- static ChunkInfo* balance( const string& ns, const ShardToLimitsMap& shardToLimitsMap,
- const ShardToChunksMap& shardToChunksMap, int balancedLastTime );
-
- // below exposed for testing purposes only -- treat it as private --
-
- static BSONObj pickChunk( const vector<BSONObj>& from, const vector<BSONObj>& to );
-
- /**
- * Returns true if a shard cannot receive any new chunks bacause it reache 'shardLimits'.
- * Expects the optional fields "maxSize", can in size in MB, and "usedSize", currently used size
- * in MB, on 'shardLimits'.
- */
- static bool isSizeMaxed( BSONObj shardLimits );
-
- /**
- * Returns true if 'shardLimist' contains a field "draining". Expects the optional field
- * "isDraining" on 'shrdLimits'.
- */
- static bool isDraining( BSONObj shardLimits );
-
- /**
- * Returns true if a shard currently has operations in any of its writeback queues
- */
- static bool hasOpsQueued( BSONObj shardLimits );
-
- private:
- // Convenience types
- typedef ShardToChunksMap::const_iterator ShardToChunksIter;
- typedef ShardToLimitsMap::const_iterator ShardToLimitsIter;
-
- };
-
- struct BalancerPolicy::ChunkInfo {
- const string ns;
- const string to;
- const string from;
- const BSONObj chunk;
-
- ChunkInfo( const string& a_ns , const string& a_to , const string& a_from , const BSONObj& a_chunk )
- : ns( a_ns ) , to( a_to ) , from( a_from ), chunk( a_chunk ) {}
- };
-
- /**
- * Field names used in the 'limits' map.
- */
- struct LimitsFields {
- // we use 'draining' and 'maxSize' from the 'shards' collection plus the following
- static BSONField<long long> currSize; // currently used disk space in bytes
- static BSONField<bool> hasOpsQueued; // writeback queue is not empty?
- };
-
-} // namespace mongo
-
-#endif // S_BALANCER_POLICY_HEADER