summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-10-31 11:22:49 -0400
committerKaloian Manassiev <kaloian.manassiev@mongodb.com>2018-10-31 11:39:18 -0400
commit1fa0cf66b72507b351944fcac7715ef2c6eacd9d (patch)
treef5a4d2445ebe0e3572a92785da0aa6ce71bf3bef
parent005d54fff1b4eaaf2850747071203045b76d8402 (diff)
downloadmongo-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.cpp4
-rw-r--r--src/mongo/db/s/config/initial_split_policy_test.cpp18
-rw-r--r--src/mongo/s/catalog/type_tags.cpp2
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);
}
{