diff options
author | Matthew Russotto <matthew.russotto@10gen.com> | 2020-05-01 10:03:33 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-01 14:51:48 +0000 |
commit | 816dedac32425670d6292ea5e50f297e35a87b6b (patch) | |
tree | 2ea8cbcc2ce5f43987862a8798a3584ba368120b | |
parent | f0d436d8a5f169d5ae992073e949823b64e27795 (diff) | |
download | mongo-816dedac32425670d6292ea5e50f297e35a87b6b.tar.gz |
SERVER-47878 Need to always serialize tags field in config, even if not provided or empty
-rw-r--r-- | src/mongo/db/repl/member_config.cpp | 5 | ||||
-rw-r--r-- | src/mongo/db/repl/member_config_test.cpp | 15 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/mongo/db/repl/member_config.cpp b/src/mongo/db/repl/member_config.cpp index 11647ebb6a0..aec6ae71762 100644 --- a/src/mongo/db/repl/member_config.cpp +++ b/src/mongo/db/repl/member_config.cpp @@ -189,9 +189,8 @@ BSONObj MemberConfig::toBSON(bool omitNewlyAddedField) const { configBuilder.append(kHiddenFieldName, getHidden()); configBuilder.append(kPriorityFieldName, MemberConfigBase::getPriority()); - if (hasTags()) { - configBuilder.append(kTagsFieldName, *getTags()); - } + // For historical reasons we always emit a tag field; some jstests expect it. + configBuilder.append(kTagsFieldName, getTags() ? *getTags() : BSONObj()); _splitHorizon.toBSON(configBuilder); diff --git a/src/mongo/db/repl/member_config_test.cpp b/src/mongo/db/repl/member_config_test.cpp index ac4072660e5..1fbfb94329b 100644 --- a/src/mongo/db/repl/member_config_test.cpp +++ b/src/mongo/db/repl/member_config_test.cpp @@ -822,6 +822,21 @@ TEST(MemberConfig, ParseEmptyTags) { &tagConfig); ASSERT_EQUALS(5U, mc.getNumTags()); ASSERT_FALSE(mc.hasTags()); + BSONObj obj = mc.toBSON(); + BSONElement tagField = obj.getField("tags"); + ASSERT_TRUE(tagField.type() == Object); + ASSERT_TRUE(tagField.Obj().isEmpty()); +} + +TEST(MemberConfig, TagsSerializedWhenMissing) { + ReplSetTagConfig tagConfig; + MemberConfig mc(BSON("_id" << 0 << "host" + << "localhost:12345"), + &tagConfig); + BSONObj obj = mc.toBSON(); + BSONElement tagField = obj.getField("tags"); + ASSERT_TRUE(tagField.type() == Object); + ASSERT_TRUE(tagField.Obj().isEmpty()); } TEST(MemberConfig, ParseHorizonFields) { |