This is an automated email from the ASF dual-hosted git repository. junchao pushed a commit to branch poe_fix in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git
commit 0d072c9953f62a70ec7e79ed682f6010dbd600fd Author: Ubuntu <[email protected]> AuthorDate: Wed Jan 21 04:53:20 2026 +0000 change reponse num for poe --- .../ordering/common/framework/performance_manager.cpp | 6 +++++- .../ordering/common/framework/performance_manager.h | 1 + platform/consensus/ordering/poe/framework/BUILD | 11 +++++++++++ platform/consensus/ordering/poe/framework/consensus.cpp | 17 +++++++++++++++++ platform/consensus/ordering/poe/framework/consensus.h | 4 ++++ 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/platform/consensus/ordering/common/framework/performance_manager.cpp b/platform/consensus/ordering/common/framework/performance_manager.cpp index c07088f1..a2417132 100644 --- a/platform/consensus/ordering/common/framework/performance_manager.cpp +++ b/platform/consensus/ordering/common/framework/performance_manager.cpp @@ -69,6 +69,10 @@ PerformanceManager::~PerformanceManager() { int PerformanceManager::GetPrimary() { return primary_; } +int PerformanceManager::NeedResponse() { + return config_.GetMinClientReceiveNum(); // f+1; +} + std::unique_ptr<Request> PerformanceManager::GenerateUserRequest() { std::unique_ptr<Request> request = std::make_unique<Request>(); request->set_data(data_func_()); @@ -154,7 +158,7 @@ CollectorResultCode PerformanceManager::AddResponseMsg( return CollectorResultCode::OK; } response_[idx][seq]++; - if (response_[idx][seq] >= config_.GetMinClientReceiveNum()) { + if (response_[idx][seq] >= NeedResponse()) { response_[idx].erase(response_[idx].find(seq)); done = true; } diff --git a/platform/consensus/ordering/common/framework/performance_manager.h b/platform/consensus/ordering/common/framework/performance_manager.h index a34f0573..c2dce102 100644 --- a/platform/consensus/ordering/common/framework/performance_manager.h +++ b/platform/consensus/ordering/common/framework/performance_manager.h @@ -46,6 +46,7 @@ class PerformanceManager { protected: virtual void SendMessage(const Request& request); + virtual int NeedResponse(); private: // Add response messages which will be sent back to the caller diff --git a/platform/consensus/ordering/poe/framework/BUILD b/platform/consensus/ordering/poe/framework/BUILD index 3d697bc4..4a0bb12b 100644 --- a/platform/consensus/ordering/poe/framework/BUILD +++ b/platform/consensus/ordering/poe/framework/BUILD @@ -26,8 +26,19 @@ cc_library( "//visibility:public", ], deps = [ + ":performance_manager", "//common/utils", "//platform/consensus/ordering/common/framework:consensus", "//platform/consensus/ordering/poe/algorithm:poe", ], ) + +cc_library( + name = "performance_manager", + srcs = ["performance_manager.cpp"], + hdrs = ["performance_manager.h"], + deps = [ + "//platform/consensus/ordering/common/framework:performance_manager", + "//platform/consensus/ordering/poe/proto:proposal_cc_proto", + ], +) diff --git a/platform/consensus/ordering/poe/framework/consensus.cpp b/platform/consensus/ordering/poe/framework/consensus.cpp index ef7c521e..ea0a370e 100644 --- a/platform/consensus/ordering/poe/framework/consensus.cpp +++ b/platform/consensus/ordering/poe/framework/consensus.cpp @@ -27,12 +27,29 @@ namespace resdb { namespace poe { + +std::unique_ptr<PoEPerformanceManager> Consensus::GetPerformanceManager() { + return config_.IsPerformanceRunning() + ? std::make_unique<PoEPerformanceManager>( + config_, GetBroadCastClient(), GetSignatureVerifier()) + : nullptr; +} + + Consensus::Consensus(const ResDBConfig& config, std::unique_ptr<TransactionManager> executor) : common::Consensus(config, std::move(executor)) { int total_replicas = config_.GetReplicaNum(); int f = (total_replicas - 1) / 3; + + if (config_.GetPublicKeyCertificateInfo() + .public_key() + .public_key_info() + .type() == CertificateKeyInfo::CLIENT) { + SetPerformanceManager(GetPerformanceManager()); + } + Init(); start_ = 0; diff --git a/platform/consensus/ordering/poe/framework/consensus.h b/platform/consensus/ordering/poe/framework/consensus.h index 21830d97..003c5fa4 100644 --- a/platform/consensus/ordering/poe/framework/consensus.h +++ b/platform/consensus/ordering/poe/framework/consensus.h @@ -22,6 +22,7 @@ #include "executor/common/transaction_manager.h" #include "platform/consensus/ordering/common/framework/consensus.h" #include "platform/consensus/ordering/poe/algorithm/poe.h" +#include "platform/consensus/ordering/poe/framework/performance_manager.h" #include "platform/networkstrate/consensus_manager.h" namespace resdb { @@ -41,6 +42,9 @@ class Consensus : public common::Consensus { int Prepare(const Transaction& txn); + std::unique_ptr<PoEPerformanceManager> GetPerformanceManager(); + + protected: std::unique_ptr<PoE> poe_; Stats* global_stats_;
