diff options
author | Haley Connelly <haley.connelly@mongodb.com> | 2021-07-19 21:33:49 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-08-17 21:00:21 +0000 |
commit | ab120562f17f1ff040933ecd77088f78ac6fdc83 (patch) | |
tree | 6898ee206aa8b10057f6c76bcccdeb6d0a61c4ec | |
parent | 7758ae1a0a21c662f028a687ff6b25506a52c33c (diff) | |
download | mongo-ab120562f17f1ff040933ecd77088f78ac6fdc83.tar.gz |
SERVER-58342 Allow specifying of reshardCollection zones to be empty
(cherry picked from commit 68f6c01d0f0452a9aef96e2da6289ce40fac2e41)
-rw-r--r-- | jstests/sharding/reshard_collection_basic.js | 11 | ||||
-rw-r--r-- | src/mongo/db/s/resharding/resharding_coordinator_service.cpp | 3 |
2 files changed, 13 insertions, 1 deletions
diff --git a/jstests/sharding/reshard_collection_basic.js b/jstests/sharding/reshard_collection_basic.js index bae99efdaba..94cb2e7052c 100644 --- a/jstests/sharding/reshard_collection_basic.js +++ b/jstests/sharding/reshard_collection_basic.js @@ -339,6 +339,17 @@ assertReshardCollOk({ }, 1); +jsTest.log("Succeed if zones are empty"); +assertReshardCollOk({ + reshardCollection: ns, + key: {newKey: 1}, + unique: false, + numInitialChunks: 1, + collation: {locale: 'simple'}, + zones: [] +}, + 1); + jsTest.log("Succeed with hashed shard key that provides enough cardinality."); assert.commandWorked( mongos.adminCommand({shardCollection: ns, key: {a: "hashed"}, numInitialChunks: 5})); diff --git a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp index eb419000180..acfa9b205cc 100644 --- a/src/mongo/db/s/resharding/resharding_coordinator_service.cpp +++ b/src/mongo/db/s/resharding/resharding_coordinator_service.cpp @@ -861,7 +861,8 @@ ReshardingCoordinatorExternalStateImpl::calculateParticipantShardsAndChunks( const auto tempNs = coordinatorDoc.getTempReshardingNss(); boost::optional<std::vector<mongo::TagsType>> parsedZones; - if (auto rawBSONZones = coordinatorDoc.getZones()) { + auto rawBSONZones = coordinatorDoc.getZones(); + if (rawBSONZones && rawBSONZones->size() != 0) { parsedZones.emplace(); parsedZones->reserve(rawBSONZones->size()); |