summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/config/initial_split_policy.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s/config/initial_split_policy.h')
-rw-r--r--src/mongo/db/s/config/initial_split_policy.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mongo/db/s/config/initial_split_policy.h b/src/mongo/db/s/config/initial_split_policy.h
index 68f1c9253a5..41171b3b552 100644
--- a/src/mongo/db/s/config/initial_split_policy.h
+++ b/src/mongo/db/s/config/initial_split_policy.h
@@ -272,4 +272,31 @@ private:
StringMap<size_t> _numTagsPerShard;
};
+/**
+ * Split point building strategy to be used for resharding when zones are not defined.
+ */
+class ReshardingSplitPolicy : public InitialSplitPolicy {
+public:
+ ReshardingSplitPolicy(OperationContext* opCtx,
+ const NamespaceString& nss,
+ const ShardKeyPattern& shardKey,
+ int numInitialChunks,
+ const std::vector<ShardId>& recipientShardIds,
+ const boost::intrusive_ptr<ExpressionContext>& expCtx,
+ int samplingRatio = 10);
+ ShardCollectionConfig createFirstChunks(OperationContext* opCtx,
+ const ShardKeyPattern& shardKeyPattern,
+ SplitPolicyParams params);
+ /**
+ * Creates the aggregation pipeline BSON to get documents for sampling from shards.
+ */
+ static std::vector<BSONObj> createRawPipeline(const ShardKeyPattern& shardKey,
+ int samplingRatio,
+ int numSplitPoints);
+
+private:
+ std::vector<BSONObj> _splitPoints;
+ std::vector<ShardId> _recipientShardIds;
+ int _numContiguousChunksPerShard;
+};
} // namespace mongo