diff options
author | Kshitij Gupta <kshitij.gupta@mongodb.com> | 2020-08-03 18:48:21 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-05 22:15:25 +0000 |
commit | 262e5a961fa7221bfba5722aeea2db719f2149f5 (patch) | |
tree | e6ed8473165fab5fa2977ee32837d59c8aae10ab /src/mongo/db/s/config/initial_split_policy.h | |
parent | 441f18826c8469f871c1055032cf49be69e6d314 (diff) | |
download | mongo-262e5a961fa7221bfba5722aeea2db719f2149f5.tar.gz |
SERVER-49510: Add functionality to pick new split points during resharding when zones not defined. SERVER-49525: Sample documents to pick new split points for resharding when new shard key has a hashed field.wireVersion
Diffstat (limited to 'src/mongo/db/s/config/initial_split_policy.h')
-rw-r--r-- | src/mongo/db/s/config/initial_split_policy.h | 27 |
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 |