diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-11-25 12:56:50 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2020-11-25 12:56:50 +0000 |
commit | c090dda709692c07ca492b698af9db3e1a76d8e1 (patch) | |
tree | e56a9ffc11f4b8d2fc3856faf1bdf7b925ff4196 /searchcore | |
parent | aa903bfbf23d3b855d50de185a15d8061825c778 (diff) |
Create the mbus::Route on demand instead of storing it inside StorageMessageAddress.
Creating and deleting the route is expensive and not used with RPC for Storage API communication.
Diffstat (limited to 'searchcore')
4 files changed, 10 insertions, 4 deletions
diff --git a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp b/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp index e6502d14347..714add169fd 100644 --- a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp +++ b/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.cpp @@ -23,7 +23,8 @@ DocumentApiMessageBusBmFeedHandler::DocumentApiMessageBusBmFeedHandler(BmMessage : IBmFeedHandler(), _name(vespalib::string("DocumentApiMessageBusBmFeedHandler(distributor)")), _storage_address(std::make_unique<StorageMessageAddress>("storage", NodeType::DISTRIBUTOR, 0)), - _message_bus(message_bus) + _message_bus(message_bus), + _route(_storage_address->to_mbus_route()) { } @@ -32,7 +33,7 @@ DocumentApiMessageBusBmFeedHandler::~DocumentApiMessageBusBmFeedHandler() = defa void DocumentApiMessageBusBmFeedHandler::send_msg(std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& pending_tracker) { - _message_bus.send_msg(std::move(msg), _storage_address->getRoute(), pending_tracker); + _message_bus.send_msg(std::move(msg), _route, pending_tracker); } void diff --git a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h index 42bc61e587e..52e0b89007f 100644 --- a/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h +++ b/searchcore/src/apps/vespa-feed-bm/document_api_message_bus_bm_feed_handler.h @@ -3,6 +3,7 @@ #pragma once #include "i_bm_feed_handler.h" +#include <vespa/messagebus/routing/route.h> namespace document { class DocumentTypeRepo; } namespace documentapi { class DocumentMessage; }; @@ -21,6 +22,7 @@ class DocumentApiMessageBusBmFeedHandler : public IBmFeedHandler vespalib::string _name; std::unique_ptr<storage::api::StorageMessageAddress> _storage_address; BmMessageBus& _message_bus; + mbus::Route _route; void send_msg(std::unique_ptr<documentapi::DocumentMessage> msg, PendingTracker& tracker); public: DocumentApiMessageBusBmFeedHandler(BmMessageBus &message_bus); diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp index 731b90888ea..18c1b979895 100644 --- a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp +++ b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.cpp @@ -22,7 +22,8 @@ StorageApiMessageBusBmFeedHandler::StorageApiMessageBusBmFeedHandler(BmMessageBu _name(vespalib::string("StorageApiMessageBusBmFeedHandler(") + (distributor ? "distributor" : "service-layer") + ")"), _distributor(distributor), _storage_address(std::make_unique<StorageMessageAddress>("storage", distributor ? NodeType::DISTRIBUTOR : NodeType::STORAGE, 0)), - _message_bus(message_bus) + _message_bus(message_bus), + _route(_storage_address->to_mbus_route()) { } @@ -33,7 +34,7 @@ StorageApiMessageBusBmFeedHandler::send_msg(std::shared_ptr<storage::api::Storag { cmd->setSourceIndex(0); auto msg = std::make_unique<storage::mbusprot::StorageCommand>(cmd); - _message_bus.send_msg(std::move(msg), _storage_address->getRoute(), pending_tracker); + _message_bus.send_msg(std::move(msg), _route, pending_tracker); } void diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h index 82447e1e873..6925053ad43 100644 --- a/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h +++ b/searchcore/src/apps/vespa-feed-bm/storage_api_message_bus_bm_feed_handler.h @@ -3,6 +3,7 @@ #pragma once #include "i_bm_feed_handler.h" +#include <vespa/messagebus/routing/route.h> namespace document { class DocumentTypeRepo; } namespace documentapi { class DocumentMessage; }; @@ -25,6 +26,7 @@ class StorageApiMessageBusBmFeedHandler : public IBmFeedHandler bool _distributor; std::unique_ptr<storage::api::StorageMessageAddress> _storage_address; BmMessageBus& _message_bus; + mbus::Route _route; void send_msg(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker); public: StorageApiMessageBusBmFeedHandler(BmMessageBus &message_bus, bool distributor); |