You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by yo...@apache.org on 2022/08/01 13:44:48 UTC

[bookkeeper] 02/17: Ledger replicate supports throttle (#2778)

This is an automated email from the ASF dual-hosted git repository.

yong pushed a commit to branch branch-4.15
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 688460b670683adefc0a9e7629f40d1d48c5eb44
Author: gaozhangmin <ga...@qq.com>
AuthorDate: Mon Dec 13 19:55:02 2021 +0800

    Ledger replicate supports throttle (#2778)
    
    Ledger replicating puts  heavy loads on cluster.
    Now,  ledger replicate only supports split fragments into small pieces.
     But, throttling is not supported.
    
    Add a confiuration `replicationRateByBytes `
    
    support throttling  read rate in bytes.
    
    Also bookkeeper shell recover command supports throttle.
    
    (cherry picked from commit a2d73416667a94597d507f9a27b1561d39366c98)
---
 .../bookkeeper/conf/ClientConfiguration.java       | 24 ++++++++++++++++++++++
 .../bookkeeper/conf/ServerConfiguration.java       | 23 +++++++++++++++++++++
 2 files changed, 47 insertions(+)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
index 935445174f..57f0323196 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ClientConfiguration.java
@@ -200,6 +200,30 @@ public class ClientConfiguration extends AbstractConfiguration<ClientConfigurati
     protected static final String CLIENT_CONNECT_BOOKIE_UNAVAILABLE_LOG_THROTTLING =
             "clientConnectBookieUnavailableLogThrottling";
 
+    protected static final String REPLICATION_RATE_BY_BYTES = "replicationRateByBytes";
+
+    /**
+     * Get the bytes rate of re-replication.
+     * Default value is -1 which it means entries will replicated without any throttling activity.
+     *
+     * @return bytes rate of re-replication.
+     */
+    public int getReplicationRateByBytes() {
+        return getInt(REPLICATION_RATE_BY_BYTES, -1);
+    }
+
+    /**
+     * Set the bytes rate of re-replication.
+     *
+     * @param rate bytes rate of re-replication.
+     *
+     * @return ClientConfiguration
+     */
+    public ClientConfiguration setReplicationRateByBytes(int rate) {
+        this.setProperty(REPLICATION_RATE_BY_BYTES, rate);
+        return this;
+    }
+
     /**
      * Construct a default client-side configuration.
      */
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
index 09a1c76cc5..6327599808 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/conf/ServerConfiguration.java
@@ -216,6 +216,7 @@ public class ServerConfiguration extends AbstractConfiguration<ServerConfigurati
         "auditorAcquireConcurrentOpenLedgerOperationsTimeOutMSec";
     protected static final String IN_FLIGHT_READ_ENTRY_NUM_IN_LEDGER_CHECKER = "inFlightReadEntryNumInLedgerChecker";
 
+    protected static final String REPLICATION_RATE_BY_BYTES = "replicationRateByBytes";
 
     // Worker Thread parameters.
     protected static final String NUM_ADD_WORKER_THREADS = "numAddWorkerThreads";
@@ -3973,4 +3974,26 @@ public class ServerConfiguration extends AbstractConfiguration<ServerConfigurati
         this.setProperty(LEDGER_METADATA_ROCKSDB_CONF, ledgerMetadataRocksdbConf);
         return this;
     }
+
+    /**
+     * Get the bytes rate of re-replication.
+     * Default value is -1 which it means entries will replicated without any throttling activity.
+     *
+     * @return bytes rate of re-replication.
+     */
+    public int getReplicationRateByBytes() {
+        return getInt(REPLICATION_RATE_BY_BYTES, -1);
+    }
+
+    /**
+     * Set the rate of re-replication.
+     *
+     * @param rate bytes rate of re-replication.
+     *
+     * @return ServerConfiguration
+     */
+    public ServerConfiguration setReplicationRateByBytes(int rate) {
+        setProperty(REPLICATION_RATE_BY_BYTES, rate);
+        return this;
+    }
 }