diff options
author | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2018-10-31 11:22:49 -0400 |
---|---|---|
committer | Kaloian Manassiev <kaloian.manassiev@mongodb.com> | 2018-10-31 11:39:18 -0400 |
commit | 1fa0cf66b72507b351944fcac7715ef2c6eacd9d (patch) | |
tree | f5a4d2445ebe0e3572a92785da0aa6ce71bf3bef | |
parent | 005d54fff1b4eaaf2850747071203045b76d8402 (diff) | |
download | mongo-1fa0cf66b72507b351944fcac7715ef2c6eacd9d.tar.gz |
SERVER-37578 Fix failing sharding_catalog_manager_test
(cherry picked from commit 13f7dfda95858b7941790eb3aba2ce56332ca674)
-rw-r--r-- | src/mongo/db/s/config/initial_split_policy.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/s/config/initial_split_policy_test.cpp | 18 | ||||
-rw-r--r-- | src/mongo/s/catalog/type_tags.cpp | 2 |
3 files changed, 14 insertions, 10 deletions
diff --git a/src/mongo/db/s/config/initial_split_policy.cpp b/src/mongo/db/s/config/initial_split_policy.cpp index e73f90de3ac..f5124971112 100644 --- a/src/mongo/db/s/config/initial_split_policy.cpp +++ b/src/mongo/db/s/config/initial_split_policy.cpp @@ -238,7 +238,9 @@ InitialSplitPolicy::generateShardCollectionInitialZonedChunks( } // check that this tag is associated with a shard and if so create a chunk for the zone. - const auto& shardIdsForChunk = tagToShards.find(tag.getTag())->second; + const auto it = tagToShards.find(tag.getTag()); + invariant(it != tagToShards.end()); + const auto& shardIdsForChunk = it->second; uassert(50973, str::stream() << "cannot shard collection " diff --git a/src/mongo/db/s/config/initial_split_policy_test.cpp b/src/mongo/db/s/config/initial_split_policy_test.cpp index 2b0c9198eee..85cb8643ec8 100644 --- a/src/mongo/db/s/config/initial_split_policy_test.cpp +++ b/src/mongo/db/s/config/initial_split_policy_test.cpp @@ -42,6 +42,8 @@ namespace mongo { namespace { +using unittest::assertGet; + /** * Asserts that the given vectors of BSON objects are equal */ @@ -301,9 +303,7 @@ public: tagDocBuilder.append(TagsType::min(), range.getMin()); tagDocBuilder.append(TagsType::max(), range.getMax()); tagDocBuilder.append(TagsType::tag(), zoneName); - const auto parseStatus = TagsType::fromBSON(tagDocBuilder.obj()); - uassertStatusOK(parseStatus); - return parseStatus.getValue(); + return assertGet(TagsType::fromBSON(tagDocBuilder.obj())); } /** @@ -431,11 +431,13 @@ TEST_F(GenerateShardCollectionInitialZonedChunksTest, EmptyTagsShouldFail) { } TEST_F(GenerateShardCollectionInitialZonedChunksTest, ZoneNotAssociatedWithAnyShardShouldFail) { - const std::vector<TagsType> tags = { - makeTag(ChunkRange(keyPattern().globalMin(), BSON(shardKey() << 0)), zoneName("0")), - makeTag(ChunkRange(BSON(shardKey() << 0), keyPattern().globalMax()), zoneName("1"))}; - StringMap<std::vector<ShardId>> tagToShards = {{zoneName("0"), {ShardId("Shard0")}}, - {zoneName("1"), {}}}; + const auto zone1 = zoneName("0"); + const auto zone2 = zoneName("1"); + + const std::vector<TagsType> tags{ + makeTag(ChunkRange(keyPattern().globalMin(), BSON(shardKey() << 0)), zone1), + makeTag(ChunkRange(BSON(shardKey() << 0), keyPattern().globalMax()), zone2)}; + const StringMap<std::vector<ShardId>> tagToShards{{zone1, {ShardId("Shard0")}}, {zone2, {}}}; ASSERT_THROWS_CODE( InitialSplitPolicy::generateShardCollectionInitialZonedChunks( diff --git a/src/mongo/s/catalog/type_tags.cpp b/src/mongo/s/catalog/type_tags.cpp index 9573a0a3b06..4c0a67327f9 100644 --- a/src/mongo/s/catalog/type_tags.cpp +++ b/src/mongo/s/catalog/type_tags.cpp @@ -72,7 +72,7 @@ StatusWith<TagsType> TagsType::fromBSON(const BSONObj& source) { return status; } - tags._tag = tagsTag; + tags._tag = std::move(tagsTag); } { |