diff options
author | Randolph Tan <randolph@10gen.com> | 2017-03-09 10:54:04 -0500 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2017-03-10 13:11:07 -0500 |
commit | a067d77c06242aed80ccbf9e6d03b6a054849ffa (patch) | |
tree | b94ac2388db6989316893a82d0e361420e800ec3 /src/mongo/rpc/metadata | |
parent | d2c44fd6ccdeab0590f8fe2413c84c2467f2b60e (diff) | |
download | mongo-a067d77c06242aed80ccbf9e6d03b6a054849ffa.tar.gz |
Revert "Revert "SERVER-27750 Attach LogicalTimeMetadata to globalConnPool and shardConnectionPool""
This reverts commit 4e2cb91ed1fe8a9a8caead72a7f0bd56b2ba28d1.
Diffstat (limited to 'src/mongo/rpc/metadata')
4 files changed, 24 insertions, 34 deletions
diff --git a/src/mongo/rpc/metadata/egress_metadata_hook_list.cpp b/src/mongo/rpc/metadata/egress_metadata_hook_list.cpp index 5e11c84eb60..2c2ae6d3349 100644 --- a/src/mongo/rpc/metadata/egress_metadata_hook_list.cpp +++ b/src/mongo/rpc/metadata/egress_metadata_hook_list.cpp @@ -41,10 +41,9 @@ void EgressMetadataHookList::addHook(std::unique_ptr<EgressMetadataHook>&& newHo } Status EgressMetadataHookList::writeRequestMetadata(OperationContext* opCtx, - const HostAndPort& requestDestination, BSONObjBuilder* metadataBob) { for (auto&& hook : _hooks) { - auto status = hook->writeRequestMetadata(opCtx, requestDestination, metadataBob); + auto status = hook->writeRequestMetadata(opCtx, metadataBob); if (!status.isOK()) { return status; } @@ -53,7 +52,7 @@ Status EgressMetadataHookList::writeRequestMetadata(OperationContext* opCtx, return Status::OK(); } -Status EgressMetadataHookList::readReplyMetadata(const HostAndPort& replySource, +Status EgressMetadataHookList::readReplyMetadata(StringData replySource, const BSONObj& metadataObj) { for (auto&& hook : _hooks) { auto status = hook->readReplyMetadata(replySource, metadataObj); diff --git a/src/mongo/rpc/metadata/egress_metadata_hook_list.h b/src/mongo/rpc/metadata/egress_metadata_hook_list.h index 54b03b80c5e..64087bc0e25 100644 --- a/src/mongo/rpc/metadata/egress_metadata_hook_list.h +++ b/src/mongo/rpc/metadata/egress_metadata_hook_list.h @@ -58,16 +58,14 @@ public: * early if one of hooks returned a non OK status and return it. Note that metadataBob should * not be used if Status is not OK as the contents can be partial. */ - Status writeRequestMetadata(OperationContext* opCtx, - const HostAndPort& requestDestination, - BSONObjBuilder* metadataBob) override; + Status writeRequestMetadata(OperationContext* opCtx, BSONObjBuilder* metadataBob) override; /** * Calls readReplyMetadata on every hook in the order they were added. This will terminate * early if one of hooks returned a non OK status and return it. Note that metadataBob should * not be used if Status is not OK as the contents can be partial. */ - Status readReplyMetadata(const HostAndPort& replySource, const BSONObj& metadataObj) override; + Status readReplyMetadata(StringData replySource, const BSONObj& metadataObj) override; private: std::vector<std::unique_ptr<EgressMetadataHook>> _hooks; diff --git a/src/mongo/rpc/metadata/egress_metadata_hook_list_test.cpp b/src/mongo/rpc/metadata/egress_metadata_hook_list_test.cpp index 159a78412fb..63293347428 100644 --- a/src/mongo/rpc/metadata/egress_metadata_hook_list_test.cpp +++ b/src/mongo/rpc/metadata/egress_metadata_hook_list_test.cpp @@ -43,7 +43,7 @@ namespace { struct ReadReplyArgs { public: - HostAndPort replySource; + StringData replySource; BSONObj metadataObj; }; @@ -51,14 +51,12 @@ class TestHook : public EgressMetadataHook { public: TestHook(string fieldName, ReadReplyArgs* arg) : _fieldName(fieldName), _arg(arg) {} - Status writeRequestMetadata(OperationContext* opCtx, - const HostAndPort& requestDestination, - BSONObjBuilder* metadataBob) override { - metadataBob->append(_fieldName, requestDestination.toString()); + Status writeRequestMetadata(OperationContext* opCtx, BSONObjBuilder* metadataBob) override { + metadataBob->append(_fieldName, ""); return Status::OK(); } - Status readReplyMetadata(const HostAndPort& replySource, const BSONObj& metadataObj) { + Status readReplyMetadata(StringData replySource, const BSONObj& metadataObj) { invariant(_arg != nullptr); _arg->replySource = replySource; _arg->metadataObj = metadataObj; @@ -74,13 +72,11 @@ class FixedStatusTestHook : public EgressMetadataHook { public: FixedStatusTestHook(Status status) : _toRet(status) {} - Status writeRequestMetadata(OperationContext* opCtx, - const HostAndPort& requestDestination, - BSONObjBuilder* metadataBob) override { + Status writeRequestMetadata(OperationContext* opCtx, BSONObjBuilder* metadataBob) override { return _toRet; } - Status readReplyMetadata(const HostAndPort& replySource, const BSONObj& metadataObj) { + Status readReplyMetadata(StringData replySource, const BSONObj& metadataObj) { return _toRet; } @@ -90,11 +86,10 @@ private: TEST(EgressMetadataHookListTest, EmptyHookShouldNotFail) { EgressMetadataHookList hookList; - HostAndPort emptyHost; - ASSERT_OK(hookList.writeRequestMetadata(nullptr, emptyHost, nullptr)); + ASSERT_OK(hookList.writeRequestMetadata(nullptr, nullptr)); BSONObj emptyObj; - ASSERT_OK(hookList.readReplyMetadata(emptyHost, emptyObj)); + ASSERT_OK(hookList.readReplyMetadata("", emptyObj)); } TEST(EgressMetadataHookListTest, SingleHook) { @@ -104,12 +99,12 @@ TEST(EgressMetadataHookListTest, SingleHook) { hookList.addHook(std::move(hook1)); BSONObjBuilder builder; - ASSERT_OK(hookList.writeRequestMetadata(nullptr, HostAndPort("a:123"), &builder)); + ASSERT_OK(hookList.writeRequestMetadata(nullptr, &builder)); ASSERT_BSONOBJ_EQ(BSON("h1" - << "a:123"), + << ""), builder.obj()); - HostAndPort testHost("b:456"); + string testHost("b:456"); BSONObj testObj(BSON("x" << 1)); ASSERT_OK(hookList.readReplyMetadata(testHost, testObj)); ASSERT_EQ(testHost, hook1Args.replySource); @@ -127,14 +122,14 @@ TEST(EgressMetadataHookListTest, MultipleHooks) { hookList.addHook(std::move(hook2)); BSONObjBuilder builder; - ASSERT_OK(hookList.writeRequestMetadata(nullptr, HostAndPort("a:123"), &builder)); + ASSERT_OK(hookList.writeRequestMetadata(nullptr, &builder)); ASSERT_BSONOBJ_EQ(BSON("foo" - << "a:123" + << "" << "bar" - << "a:123"), + << ""), builder.obj()); - HostAndPort testHost("b:456"); + string testHost("b:456"); BSONObj testObj(BSON("x" << 1)); ASSERT_OK(hookList.readReplyMetadata(testHost, testObj)); @@ -156,8 +151,8 @@ TEST(EgressMetadataHookListTest, SingleBadHookShouldReturnError) { hookList.addHook(std::move(hook2)); BSONObjBuilder builder; - ASSERT_NOT_OK(hookList.writeRequestMetadata(nullptr, HostAndPort("a:123"), &builder)); - ASSERT_NOT_OK(hookList.readReplyMetadata(HostAndPort("b:456"), BSON("x" << 1))); + ASSERT_NOT_OK(hookList.writeRequestMetadata(nullptr, &builder)); + ASSERT_NOT_OK(hookList.readReplyMetadata("b:456", BSON("x" << 1))); } } // unnamed namespace diff --git a/src/mongo/rpc/metadata/metadata_hook.h b/src/mongo/rpc/metadata/metadata_hook.h index 81f0001f548..1bb050e0eda 100644 --- a/src/mongo/rpc/metadata/metadata_hook.h +++ b/src/mongo/rpc/metadata/metadata_hook.h @@ -35,6 +35,7 @@ class BSONObjBuilder; struct HostAndPort; class OperationContext; class Status; +class StringData; namespace rpc { @@ -58,16 +59,13 @@ public: * not * have an OperationContext as a result. */ - virtual Status writeRequestMetadata(OperationContext* opCtx, - const HostAndPort& requestDestination, - BSONObjBuilder* metadataBob) = 0; + virtual Status writeRequestMetadata(OperationContext* opCtx, BSONObjBuilder* metadataBob) = 0; /** * Reads metadata from an incoming command reply. This method must not throw or block on * database or network operations and can be called by multiple concurrent threads. */ - virtual Status readReplyMetadata(const HostAndPort& replySource, - const BSONObj& metadataObj) = 0; + virtual Status readReplyMetadata(StringData replySource, const BSONObj& metadataObj) = 0; protected: EgressMetadataHook() = default; |