From ee29e2871f56a8cb8616c7ce281df2e6dede48f9 Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Thu, 18 Jan 2024 22:51:05 +0800 Subject: [PATCH 1/9] Support specifying multiple journalDir as bookie start command parameters --- .../java/org/apache/bookkeeper/server/Main.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java index decc32c24a0..b060ed7551b 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java @@ -61,7 +61,9 @@ public class Main { BK_OPTS.addOption("m", "zkledgerpath", true, "Zookeeper ledgers root path"); BK_OPTS.addOption("p", "bookieport", true, "bookie port exported"); BK_OPTS.addOption("hp", "httpport", true, "bookie http port exported"); - BK_OPTS.addOption("j", "journal", true, "bookie journal directory"); + Option journalDirs = new Option ("j", "journaldirs", true, "bookie journal directories"); + journalDirs.setArgs(10); + BK_OPTS.addOption(journalDirs); Option indexDirs = new Option ("i", "indexdirs", true, "bookie index directories"); indexDirs.setArgs(10); BK_OPTS.addOption(indexDirs); @@ -82,7 +84,9 @@ private static void printUsage() { + "Options including:\n"; String footer = "Here is an example:\n" + "\tBookieServer -c bookie.conf -z localhost:2181 -m /bookkeeper/ledgers " - + "-p 3181 -j /mnt/journal -i \"/mnt/index1 /mnt/index2\"" + + " -p 3181 " + + " -j \"/mnt/journal1 /mnt/journal2 \" " + + " -i \"/mnt/index1 /mnt/index2\" " + " -l \"/mnt/ledger1 /mnt/ledger2 /mnt/ledger3\"\n"; hf.printHelp("BookieServer [options]\n", header, BK_OPTS, footer, true); } @@ -165,9 +169,12 @@ private static ServerConfiguration parseArgs(String[] args) } if (cmdLine.hasOption('j')) { - String sJournalDir = cmdLine.getOptionValue('j'); - log.info("Get cmdline journal dir: {}", sJournalDir); - conf.setJournalDirName(sJournalDir); + String sJournalDirs = cmdLine.getOptionValue('j'); + log.info("Get cmdline journal dirs: "); + for (String journal : sJournalDirs) { + log.info("journalDir : {}", journal); + } + conf.setJournalDirsName(sJournalDirs); } if (cmdLine.hasOption('i')) { From 839afd771cc17eea596df8590eca3f7b47496920 Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Thu, 18 Jan 2024 22:57:26 +0800 Subject: [PATCH 2/9] fix sJournalDirs is string array --- .../src/main/java/org/apache/bookkeeper/server/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java index b060ed7551b..049aa4c79ae 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java @@ -169,7 +169,7 @@ private static ServerConfiguration parseArgs(String[] args) } if (cmdLine.hasOption('j')) { - String sJournalDirs = cmdLine.getOptionValue('j'); + String[] sJournalDirs = cmdLine.getOptionValue('j'); log.info("Get cmdline journal dirs: "); for (String journal : sJournalDirs) { log.info("journalDir : {}", journal); From 3b535f0296f06767e3b22f4b05f841a695cf40e7 Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Fri, 19 Jan 2024 23:35:47 +0800 Subject: [PATCH 3/9] update conf#journalDirectories for gke\docer bookkeeper --- deploy/kubernetes/gke/bookkeeper.statefulset.yml | 2 +- deploy/kubernetes/gke/bookkeeper.yaml | 2 +- docker/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/kubernetes/gke/bookkeeper.statefulset.yml b/deploy/kubernetes/gke/bookkeeper.statefulset.yml index 49548f09d05..d8e52ee0b38 100644 --- a/deploy/kubernetes/gke/bookkeeper.statefulset.yml +++ b/deploy/kubernetes/gke/bookkeeper.statefulset.yml @@ -35,7 +35,7 @@ metadata: data: BK_BOOKIE_EXTRA_OPTS: "\"-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB\"" BK_bookiePort: "3181" - BK_journalDirectory: "/bookkeeper/data/journal" + BK_journalDirectories: "/bookkeeper/data/journal" BK_ledgerDirectories: "/bookkeeper/data/ledgers" BK_indexDirectories: "/bookkeeper/data/ledgers" BK_zkServers: zookeeper diff --git a/deploy/kubernetes/gke/bookkeeper.yaml b/deploy/kubernetes/gke/bookkeeper.yaml index 78b28c892a1..3c1d02e4554 100644 --- a/deploy/kubernetes/gke/bookkeeper.yaml +++ b/deploy/kubernetes/gke/bookkeeper.yaml @@ -26,7 +26,7 @@ metadata: data: BK_BOOKIE_EXTRA_OPTS: "\"-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g -XX:+UseG1GC -XX:MaxGCPauseMillis=10 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB\"" BK_bookiePort: "3181" - BK_journalDirectory: "/bookkeeper/data/journal" + BK_journalDirectories: "/bookkeeper/data/journal" BK_ledgerDirectories: "/bookkeeper/data/ledgers" BK_indexDirectories: "/bookkeeper/data/ledgers" BK_zkServers: zookeeper diff --git a/docker/README.md b/docker/README.md index 462f1ae2a16..04b37ac6391 100644 --- a/docker/README.md +++ b/docker/README.md @@ -215,7 +215,7 @@ Default value is empty - " ". so ledgers dir in zookeeper will be at "/ledgers" #### `BK_DATA_DIR` This variable allows you to specify where to store data in docker instance. -This could be override by env vars "BK_journalDirectory", "BK_ledgerDirectories", "BK_indexDirectories" and also `journalDirectory`, `ledgerDirectories`, `indexDirectories` in [bk_server.conf](https://github.com/apache/bookkeeper/blob/master/bookkeeper-server/conf/bk_server.conf). +This could be override by env vars "BK_journalDirectories", "BK_ledgerDirectories", "BK_indexDirectories" and also `journalDirectories`, `ledgerDirectories`, `indexDirectories` in [bk_server.conf](https://github.com/apache/bookkeeper/blob/master/conf/bk_server.conf). Default value is "/data/bookkeeper", which contains volumes `/data/bookkeeper/journal`, `/data/bookkeeper/ledgers` and `/data/bookkeeper/index` to hold Bookkeeper data in docker. From 0ff1615125e3cfcdc546bc1eca15ce98e9a74ee5 Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Fri, 19 Jan 2024 23:52:40 +0800 Subject: [PATCH 4/9] update conf#journalDirectories for gke\docer bookkeeper v2 --- docker/scripts/common.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/scripts/common.sh b/docker/scripts/common.sh index 0f745db4b45..fc0ce9893c3 100755 --- a/docker/scripts/common.sh +++ b/docker/scripts/common.sh @@ -36,7 +36,7 @@ export BK_metadataServiceUri=${BK_metadataServiceUri:-"zk://${BK_zkServers}${BK_ export BK_bookiePort=${BK_bookiePort:-${PORT0}} export BK_httpServerEnabled=${BK_httpServerEnabled:-"true"} export BK_httpServerPort=${BK_httpServerPort:-${BOOKIE_HTTP_PORT}} -export BK_journalDirectory=${BK_journalDirectory:-${BK_DATA_DIR}/journal} +export BK_journalDirectories=${BK_journalDirectories:-${BK_DATA_DIR}/journal} export BK_ledgerDirectories=${BK_ledgerDirectories:-${BK_DATA_DIR}/ledgers} export BK_indexDirectories=${BK_indexDirectories:-${BK_ledgerDirectories}} # dlog @@ -55,7 +55,7 @@ echo "" echo " [bookie]" echo " BK_bookiePort bookie service port is $BK_bookiePort" echo " BK_DATA_DIR is $BK_DATA_DIR" -echo " BK_journalDirectory is ${BK_journalDirectory}" +echo " BK_journalDirectories is ${BK_journalDirectories}" echo " BK_ledgerDirectories are ${BK_ledgerDirectories}" echo " BK_indexDirectories are ${BK_indexDirectories}" echo "" @@ -77,15 +77,15 @@ export BOOKIE_CONF=${BK_HOME}/conf/bk_server.conf export SERVICE_PORT=${PORT0} function create_bookie_dirs() { - mkdir -p "${BK_journalDirectory}" "${BK_ledgerDirectories}" "${BK_indexDirectories}" + mkdir -p "${BK_journalDirectories}" "${BK_ledgerDirectories}" "${BK_indexDirectories}" echo "Created bookie dirs : " - echo " journal = ${BK_journalDirectory}" + echo " journal = ${BK_journalDirectories}" echo " ledger = ${BK_ledgerDirectories}" echo " index = ${BK_indexDirectories}" # -------------- # # Allow the container to be started with `--user` if [ "$(id -u)" = '0' ]; then - chown -R "${BK_USER}:${BK_USER}" "${BK_journalDirectory}" "${BK_ledgerDirectories}" "${BK_indexDirectories}" + chown -R "${BK_USER}:${BK_USER}" "${BK_journalDirectories}" "${BK_ledgerDirectories}" "${BK_indexDirectories}" fi # -------------- # } From 02d637aa0ca6485e7857bb4d5b83a57d7c7784fe Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Fri, 19 Jan 2024 23:59:04 +0800 Subject: [PATCH 5/9] update conf#journalDirectories for gke\docer bookkeeper v3 --- .../all-versions-image/scripts/update-conf-and-boot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker-images/all-versions-image/scripts/update-conf-and-boot.sh b/tests/docker-images/all-versions-image/scripts/update-conf-and-boot.sh index 4248862648b..32e4ed37ba1 100644 --- a/tests/docker-images/all-versions-image/scripts/update-conf-and-boot.sh +++ b/tests/docker-images/all-versions-image/scripts/update-conf-and-boot.sh @@ -20,7 +20,7 @@ mkdir -p $BK_JOURNALDIR $BK_LEDGERDIR -sed -i "s|journalDirectory=.*|journalDirectory=$BK_JOURNALDIR|" /opt/bookkeeper/*/conf/bk_server.conf +sed -i "s|journalDirectories=.*|journalDirectories=$BK_JOURNALDIR|" /opt/bookkeeper/*/conf/bk_server.conf sed -i "s|ledgerDirectories=.*|ledgerDirectories=$BK_LEDGERDIR|" /opt/bookkeeper/*/conf/bk_server.conf sed -i "s|zkServers=.*|zkServers=$BK_ZKCONNECTSTRING|" /opt/bookkeeper/*/conf/bk_server.conf From 2220764c67840b2670ef2e9d0ad1d0c5004389cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=A4=E6=9C=88?= <974226358@qq.com> Date: Wed, 21 Feb 2024 12:21:23 +0800 Subject: [PATCH 6/9] fix getOptionValues --- .../src/main/java/org/apache/bookkeeper/server/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java index 049aa4c79ae..3851502ed6e 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java @@ -169,7 +169,7 @@ private static ServerConfiguration parseArgs(String[] args) } if (cmdLine.hasOption('j')) { - String[] sJournalDirs = cmdLine.getOptionValue('j'); + String[] sJournalDirs = cmdLine.getOptionValues('j'); log.info("Get cmdline journal dirs: "); for (String journal : sJournalDirs) { log.info("journalDir : {}", journal); From 51489cad934eefad15eafad2d91498605d0dc157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=A4=E6=9C=88?= <974226358@qq.com> Date: Wed, 21 Feb 2024 13:19:39 +0800 Subject: [PATCH 7/9] Delete extra spaces --- .../src/main/java/org/apache/bookkeeper/server/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java index 3851502ed6e..2a6817f88bb 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java @@ -85,7 +85,7 @@ private static void printUsage() { String footer = "Here is an example:\n" + "\tBookieServer -c bookie.conf -z localhost:2181 -m /bookkeeper/ledgers " + " -p 3181 " - + " -j \"/mnt/journal1 /mnt/journal2 \" " + + " -j \"/mnt/journal1 /mnt/journal2\" " + " -i \"/mnt/index1 /mnt/index2\" " + " -l \"/mnt/ledger1 /mnt/ledger2 /mnt/ledger3\"\n"; hf.printHelp("BookieServer [options]\n", header, BK_OPTS, footer, true); From f2522580f295977955d90470024a3e61e9c91d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=A4=E6=9C=88?= <974226358@qq.com> Date: Wed, 21 Feb 2024 13:21:52 +0800 Subject: [PATCH 8/9] Delete extra spaces --- .../src/main/java/org/apache/bookkeeper/server/Main.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java index 2a6817f88bb..ad242c11160 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/server/Main.java @@ -83,10 +83,10 @@ private static void printUsage() { + "The settings in configuration file will be overwrite by provided arguments.\n" + "Options including:\n"; String footer = "Here is an example:\n" - + "\tBookieServer -c bookie.conf -z localhost:2181 -m /bookkeeper/ledgers " - + " -p 3181 " - + " -j \"/mnt/journal1 /mnt/journal2\" " - + " -i \"/mnt/index1 /mnt/index2\" " + + "\tBookieServer -c bookie.conf -z localhost:2181 -m /bookkeeper/ledgers" + + " -p 3181" + + " -j \"/mnt/journal1 /mnt/journal2\"" + + " -i \"/mnt/index1 /mnt/index2\"" + " -l \"/mnt/ledger1 /mnt/ledger2 /mnt/ledger3\"\n"; hf.printHelp("BookieServer [options]\n", header, BK_OPTS, footer, true); } From 1e5a98524031d42f38704bec38866085a01c1a22 Mon Sep 17 00:00:00 2001 From: zwOvO <974226358@qq.com> Date: Sat, 24 Feb 2024 14:36:01 +0800 Subject: [PATCH 9/9] Iteration from BK_journalDirectory to BK_JohannalDirectories and ensuring compatibility --- docker/scripts/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/scripts/common.sh b/docker/scripts/common.sh index fc0ce9893c3..0b188eefc0b 100755 --- a/docker/scripts/common.sh +++ b/docker/scripts/common.sh @@ -36,7 +36,7 @@ export BK_metadataServiceUri=${BK_metadataServiceUri:-"zk://${BK_zkServers}${BK_ export BK_bookiePort=${BK_bookiePort:-${PORT0}} export BK_httpServerEnabled=${BK_httpServerEnabled:-"true"} export BK_httpServerPort=${BK_httpServerPort:-${BOOKIE_HTTP_PORT}} -export BK_journalDirectories=${BK_journalDirectories:-${BK_DATA_DIR}/journal} +export BK_journalDirectories=${BK_journalDirectories:-${BK_journalDirectory:-${BK_DATA_DIR}/journal}} export BK_ledgerDirectories=${BK_ledgerDirectories:-${BK_DATA_DIR}/ledgers} export BK_indexDirectories=${BK_indexDirectories:-${BK_ledgerDirectories}} # dlog