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

chenhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 7576f224bc BenchReadThroughputLatency support config the way of gen 
ledger path. (#4219)
7576f224bc is described below

commit 7576f224bcb1866fc2cadd48ccf51af4866e7bcd
Author: Yan Zhao <[email protected]>
AuthorDate: Fri Mar 1 10:16:47 2024 +0800

    BenchReadThroughputLatency support config the way of gen ledger path. 
(#4219)
    
    ### Motivation
    In BenchReadThroughputLatency, it generates the ledger zk node path using
    `String.format("/ledgers/L%010d", ledger.get());`
    
    But if the user uses `HierarchicalLedgerManager`, 
`LegacyHierarchicalLedgerManager`, or `LongHierarchicalLedgerManager`, the 
ledger zk node path is not the same as the way in the 
BenchReadThroughputLatency.
    
    So we need support config the `genLedgerWay` to match the custom 
LedgerManager.
---
 .../benchmark/BenchReadThroughputLatency.java        | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchReadThroughputLatency.java
 
b/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchReadThroughputLatency.java
index 5c04558b84..5cd029b3c1 100644
--- 
a/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchReadThroughputLatency.java
+++ 
b/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchReadThroughputLatency.java
@@ -36,6 +36,7 @@ import org.apache.bookkeeper.client.BookKeeper;
 import org.apache.bookkeeper.client.LedgerEntry;
 import org.apache.bookkeeper.client.LedgerHandle;
 import org.apache.bookkeeper.conf.ClientConfiguration;
+import org.apache.bookkeeper.util.StringUtils;
 import org.apache.bookkeeper.zookeeper.ZooKeeperClient;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -159,6 +160,9 @@ public class BenchReadThroughputLatency {
         Options options = new Options();
         options.addOption("ledger", true, "Ledger to read. If empty, read all 
ledgers which come available. "
                           + " Cannot be used with -listen");
+        //How to generate ledger node path.
+        options.addOption("ledgerManagerType", true, "The ledger manager type. 
"
+                + "The optional value: flat, hierarchical, legacyHierarchical, 
longHierarchical. Default: flat");
         options.addOption("listen", true, "Listen for creation of <arg> 
ledgers, and read each one fully");
         options.addOption("password", true, "Password used to access ledgers 
(default 'benchPasswd')");
         options.addOption("zookeeper", true, "Zookeeper ensemble, default 
\"localhost:2181\"");
@@ -199,7 +203,21 @@ public class BenchReadThroughputLatency {
         }
 
         final CountDownLatch shutdownLatch = new CountDownLatch(1);
-        final String nodepath = String.format("/ledgers/L%010d", ledger.get());
+
+        String ledgerManagerType = cmd.getOptionValue("ledgerManagerType", 
"flat");
+        String nodepath;
+        if ("flat".equals(ledgerManagerType)) {
+            nodepath = String.format("/ledgers/L%010d", ledger.get());
+        } else if ("hierarchical".equals(ledgerManagerType)) {
+            nodepath = String.format("/ledgers%s", 
StringUtils.getHybridHierarchicalLedgerPath(ledger.get()));
+        } else if ("legacyHierarchical".equals(ledgerManagerType)) {
+            nodepath = String.format("/ledgers%s", 
StringUtils.getShortHierarchicalLedgerPath(ledger.get()));
+        } else if ("longHierarchical".equals(ledgerManagerType)) {
+            nodepath = String.format("/ledgers%s", 
StringUtils.getLongHierarchicalLedgerPath(ledger.get()));
+        } else {
+            LOG.warn("Unknown ledger manager type: {}, use flat as the value", 
ledgerManagerType);
+            nodepath = String.format("/ledgers/L%010d", ledger.get());
+        }
 
         final ClientConfiguration conf = new ClientConfiguration();
         conf.setReadTimeout(sockTimeout).setZkServers(servers);

Reply via email to