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_;

Reply via email to