diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-12-15 10:07:04 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2022-12-15 12:10:58 +0000 |
commit | 73e52213eb642957fa7a5ddc53dbebbb121761df (patch) | |
tree | e722af1fc498038e604a64b72e94b4dec67c2cd5 /storage | |
parent | a5ccdfb0c8180c0ec98ec258a02615ae58c71641 (diff) |
Move MessageGuard out to storage/common sub-library
Diffstat (limited to 'storage')
8 files changed, 60 insertions, 48 deletions
diff --git a/storage/src/vespa/storage/common/CMakeLists.txt b/storage/src/vespa/storage/common/CMakeLists.txt index 33efbb571fd..4a712719d53 100644 --- a/storage/src/vespa/storage/common/CMakeLists.txt +++ b/storage/src/vespa/storage/common/CMakeLists.txt @@ -8,6 +8,7 @@ vespa_add_library(storage_common OBJECT distributorcomponent.cpp global_bucket_space_distribution_converter.cpp messagebucket.cpp + message_guard.cpp messagesender.cpp node_identity.cpp reindexing_constants.cpp diff --git a/storage/src/vespa/storage/common/message_guard.cpp b/storage/src/vespa/storage/common/message_guard.cpp new file mode 100644 index 00000000000..335b2c3d4d7 --- /dev/null +++ b/storage/src/vespa/storage/common/message_guard.cpp @@ -0,0 +1,16 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include "message_guard.h" + +namespace storage { + +MessageGuard::~MessageGuard() { + _lock.unlock(); + for (uint32_t i = 0; i < messagesUp.size(); i++) { + _messageSender.sendUp(messagesUp[i]); + } + for (uint32_t i = 0; i < messagesDown.size(); i++) { + _messageSender.sendDown(messagesDown[i]); + } +} + +} diff --git a/storage/src/vespa/storage/common/message_guard.h b/storage/src/vespa/storage/common/message_guard.h new file mode 100644 index 00000000000..682d7a3dc99 --- /dev/null +++ b/storage/src/vespa/storage/common/message_guard.h @@ -0,0 +1,39 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#pragma once + +#include "messagesender.h" +#include <memory> +#include <mutex> +#include <vector> + +namespace storage { + +class MessageGuard { + std::vector<std::shared_ptr<api::StorageMessage>> messagesUp; + std::vector<std::shared_ptr<api::StorageMessage>> messagesDown; + + std::unique_lock<std::mutex> _lock; + ChainedMessageSender& _messageSender; + +public: + MessageGuard(std::mutex& lock, ChainedMessageSender& messageSender) + : _lock(lock), + _messageSender(messageSender) + {} + ~MessageGuard(); + + void send(const std::shared_ptr<api::StorageMessage>& message) { + sendUp(message); + } + + void sendUp(const std::shared_ptr<api::StorageMessage>& message) { + messagesUp.push_back(message); + } + + void sendDown(const std::shared_ptr<api::StorageMessage>& message) { + messagesDown.push_back(message); + } +}; + +} + diff --git a/storage/src/vespa/storage/distributor/messageguard.h b/storage/src/vespa/storage/distributor/messageguard.h deleted file mode 100644 index 2ed75d22577..00000000000 --- a/storage/src/vespa/storage/distributor/messageguard.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#pragma once - -#include "pendingclusterstate.h" -#include <vespa/storage/common/messagesender.h> - -namespace storage { - -class MessageGuard { - std::vector<std::shared_ptr<api::StorageMessage> > messagesUp; - std::vector<std::shared_ptr<api::StorageMessage> > messagesDown; - - std::unique_lock<std::mutex> _lock; - ChainedMessageSender& _messageSender; - -public: - MessageGuard(std::mutex & lock, ChainedMessageSender& messageSender) - : _lock(lock), - _messageSender(messageSender) {} - - void send(const std::shared_ptr<api::StorageMessage>& message) { - sendUp(message); - } - - void sendUp(const std::shared_ptr<api::StorageMessage>& message) { - messagesUp.push_back(message); - } - - void sendDown(const std::shared_ptr<api::StorageMessage>& message) { - messagesDown.push_back(message); - } - - ~MessageGuard() { - _lock.unlock(); - for (uint32_t i = 0; i < messagesUp.size(); i++) { - _messageSender.sendUp(messagesUp[i]); - } - for (uint32_t i = 0; i < messagesDown.size(); i++) { - _messageSender.sendDown(messagesDown[i]); - } - } -}; - -} - diff --git a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h index 7a34ed03a3c..b31ffe53451 100644 --- a/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h +++ b/storage/src/vespa/storage/distributor/stripe_bucket_db_updater.h @@ -4,12 +4,12 @@ #include "bucketlistmerger.h" #include "distributor_stripe_component.h" #include "distributormessagesender.h" -#include "messageguard.h" #include "operation_routing_snapshot.h" #include "outdated_nodes_map.h" #include "pendingclusterstate.h" #include "potential_data_loss_report.h" #include <vespa/document/bucket/bucket.h> +#include <vespa/storage/common/message_guard.h> #include <vespa/storage/common/storagelink.h> #include <vespa/storageapi/message/bucket.h> #include <vespa/storageapi/messageapi/messagehandler.h> diff --git a/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h index d8e49d5c383..921ebf65338 100644 --- a/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h +++ b/storage/src/vespa/storage/distributor/top_level_bucket_db_updater.h @@ -4,11 +4,11 @@ #include "bucketlistmerger.h" #include "distributor_component.h" #include "distributormessagesender.h" -#include "messageguard.h" #include "operation_routing_snapshot.h" #include "outdated_nodes_map.h" #include "pendingclusterstate.h" #include <vespa/document/bucket/bucket.h> +#include <vespa/storage/common/message_guard.h> #include <vespa/storage/common/storagelink.h> #include <vespa/storageapi/message/bucket.h> #include <vespa/storageapi/messageapi/messagehandler.h> diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.cpp b/storage/src/vespa/storage/storageserver/mergethrottler.cpp index 681d97299fa..2dea5681b85 100644 --- a/storage/src/vespa/storage/storageserver/mergethrottler.cpp +++ b/storage/src/vespa/storage/storageserver/mergethrottler.cpp @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "mergethrottler.h" +#include <vespa/storageapi/message/state.h> #include <vespa/storage/common/nodestateupdater.h> #include <vespa/storage/common/dummy_mbus_messages.h> #include <vespa/storage/persistence/messages.h> diff --git a/storage/src/vespa/storage/storageserver/mergethrottler.h b/storage/src/vespa/storage/storageserver/mergethrottler.h index e501e0edd39..76a25c0cf22 100644 --- a/storage/src/vespa/storage/storageserver/mergethrottler.h +++ b/storage/src/vespa/storage/storageserver/mergethrottler.h @@ -8,9 +8,9 @@ #pragma once #include <vespa/storage/config/config-stor-server.h> +#include <vespa/storage/common/message_guard.h> #include <vespa/storage/common/storagelink.h> #include <vespa/storage/common/storagecomponent.h> -#include <vespa/storage/distributor/messageguard.h> #include <vespa/storageframework/generic/status/htmlstatusreporter.h> #include <vespa/storageapi/message/bucket.h> #include <vespa/document/bucket/bucket.h> |