diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-02-04 14:47:57 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-02-04 14:47:57 +0000 |
commit | d4ffb1cb379d3212f9d7a2ed7bd10cae9e5152f9 (patch) | |
tree | fce1430e91726e2af15f0206b79489204aa50e89 /storage | |
parent | 78c367c74800dfd14e69f8f0932c3f1eff878888 (diff) |
Append node identity to response messages sent by Bouncer component
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/tests/storageserver/bouncertest.cpp | 8 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/bouncer.cpp | 13 | ||||
-rw-r--r-- | storage/src/vespa/storage/storageserver/bouncer.h | 1 |
3 files changed, 16 insertions, 6 deletions
diff --git a/storage/src/tests/storageserver/bouncertest.cpp b/storage/src/tests/storageserver/bouncertest.cpp index 4d739aab2d6..be926722497 100644 --- a/storage/src/tests/storageserver/bouncertest.cpp +++ b/storage/src/tests/storageserver/bouncertest.cpp @@ -213,9 +213,11 @@ BouncerTest::assertMessageBouncedWithAbort() { CPPUNIT_ASSERT_EQUAL(size_t(1), _upper->getNumReplies()); CPPUNIT_ASSERT_EQUAL(size_t(0), _upper->getNumCommands()); - CPPUNIT_ASSERT_EQUAL(api::ReturnCode::ABORTED, - static_cast<api::RemoveReply&>(*_upper->getReply(0)). - getResult().getResult()); + auto& reply = dynamic_cast<api::StorageReply&>(*_upper->getReply(0)); + CPPUNIT_ASSERT_EQUAL(api::ReturnCode(api::ReturnCode::ABORTED, + "We don't allow command of type MessageType(12, Remove) " + "when node is in state Down (on storage.2)"), + reply.getResult()); CPPUNIT_ASSERT_EQUAL(size_t(0), _lower->getNumCommands()); } diff --git a/storage/src/vespa/storage/storageserver/bouncer.cpp b/storage/src/vespa/storage/storageserver/bouncer.cpp index 8e882fa867e..82cf64423c6 100644 --- a/storage/src/vespa/storage/storageserver/bouncer.cpp +++ b/storage/src/vespa/storage/storageserver/bouncer.cpp @@ -102,6 +102,10 @@ Bouncer::validateConfig( } } +void Bouncer::append_node_identity(std::ostream& target_stream) const { + target_stream << " (on " << _component.getNodeType() << '.' << _component.getIndex() << ")"; +} + void Bouncer::abortCommandForUnavailableNode(api::StorageMessage& msg, const lib::State& state) @@ -111,7 +115,8 @@ Bouncer::abortCommandForUnavailableNode(api::StorageMessage& msg, static_cast<api::StorageCommand&>(msg).makeReply().release()); std::ostringstream ost; ost << "We don't allow command of type " << msg.getType() - << " when node is in state " << state.toString(true) << "."; + << " when node is in state " << state.toString(true); + append_node_identity(ost); reply->setResult(api::ReturnCode(api::ReturnCode::ABORTED, ost.str())); sendUp(reply); } @@ -123,7 +128,8 @@ Bouncer::rejectCommandWithTooHighClockSkew(api::StorageMessage& msg, auto& as_cmd = dynamic_cast<api::StorageCommand&>(msg); std::ostringstream ost; ost << "Message " << msg.getType() << " is more than " - << maxClockSkewInSeconds << " seconds in the future."; + << maxClockSkewInSeconds << " seconds in the future"; + append_node_identity(ost); LOGBP(warning, "Rejecting operation from distributor %u: %s", as_cmd.getSourceIndex(), ost.str().c_str()); _metrics->clock_skew_aborts.inc(); @@ -140,7 +146,8 @@ Bouncer::abortCommandDueToClusterDown(api::StorageMessage& msg) static_cast<api::StorageCommand&>(msg).makeReply().release()); std::ostringstream ost; ost << "We don't allow external load while cluster is in state " - << _clusterState->toString(true) << "."; + << _clusterState->toString(true); + append_node_identity(ost); reply->setResult(api::ReturnCode(api::ReturnCode::ABORTED, ost.str())); sendUp(reply); } diff --git a/storage/src/vespa/storage/storageserver/bouncer.h b/storage/src/vespa/storage/storageserver/bouncer.h index 12a8a0f5636..258b0b18a32 100644 --- a/storage/src/vespa/storage/storageserver/bouncer.h +++ b/storage/src/vespa/storage/storageserver/bouncer.h @@ -89,6 +89,7 @@ private: void handleNewState() override; const lib::NodeState &getDerivedNodeState(document::BucketSpace bucketSpace) const; + void append_node_identity(std::ostream& target_stream) const; }; } // storage |