summaryrefslogtreecommitdiff
path: root/src/mongo/rpc/metadata
diff options
context:
space:
mode:
authorRandolph Tan <randolph@10gen.com>2017-03-09 10:54:04 -0500
committerRandolph Tan <randolph@10gen.com>2017-03-10 13:11:07 -0500
commita067d77c06242aed80ccbf9e6d03b6a054849ffa (patch)
treeb94ac2388db6989316893a82d0e361420e800ec3 /src/mongo/rpc/metadata
parentd2c44fd6ccdeab0590f8fe2413c84c2467f2b60e (diff)
downloadmongo-a067d77c06242aed80ccbf9e6d03b6a054849ffa.tar.gz
Revert "Revert "SERVER-27750 Attach LogicalTimeMetadata to globalConnPool and shardConnectionPool""
This reverts commit 4e2cb91ed1fe8a9a8caead72a7f0bd56b2ba28d1.
Diffstat (limited to 'src/mongo/rpc/metadata')
-rw-r--r--src/mongo/rpc/metadata/egress_metadata_hook_list.cpp5
-rw-r--r--src/mongo/rpc/metadata/egress_metadata_hook_list.h6
-rw-r--r--src/mongo/rpc/metadata/egress_metadata_hook_list_test.cpp39
-rw-r--r--src/mongo/rpc/metadata/metadata_hook.h8
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;