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

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


The following commit(s) were added to refs/heads/master by this push:
     new f6eceedbded [fix][cli] Fix Pulsar standalone "--wipe-data" (#22885)
f6eceedbded is described below

commit f6eceedbded53cded4dd751206ebb51d2867e978
Author: Lari Hotari <lhot...@users.noreply.github.com>
AuthorDate: Mon Jun 10 19:30:24 2024 +0300

    [fix][cli] Fix Pulsar standalone "--wipe-data" (#22885)
---
 .../src/main/java/org/apache/pulsar/PulsarStandalone.java        | 9 ++++++++-
 .../org/apache/pulsar/zookeeper/LocalBookkeeperEnsemble.java     | 2 ++
 .../java/org/apache/pulsar/metadata/bookkeeper/BKCluster.java    | 1 +
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java 
b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java
index 7f80aa29f53..d0118b06e7c 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java
@@ -18,12 +18,14 @@
  */
 package org.apache.pulsar;
 
+import static org.apache.commons.io.FileUtils.cleanDirectory;
 import static org.apache.pulsar.common.naming.NamespaceName.SYSTEM_NAMESPACE;
 import static 
org.apache.pulsar.common.naming.SystemTopicNames.TRANSACTION_COORDINATOR_ASSIGN;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Sets;
 import io.netty.util.internal.PlatformDependent;
 import java.io.File;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
@@ -446,7 +448,12 @@ public class PulsarStandalone implements AutoCloseable {
     void startBookieWithMetadataStore() throws Exception {
         if (StringUtils.isBlank(metadataStoreUrl)){
             log.info("Starting BK with RocksDb metadata store");
-            metadataStoreUrl = "rocksdb://" + 
Paths.get(metadataDir).toAbsolutePath();
+            Path metadataDirPath = Paths.get(metadataDir);
+            metadataStoreUrl = "rocksdb://" + metadataDirPath.toAbsolutePath();
+            if (wipeData && Files.exists(metadataDirPath)) {
+                log.info("Wiping RocksDb metadata store at {}", 
metadataStoreUrl);
+                cleanDirectory(metadataDirPath.toFile());
+            }
         } else {
             log.info("Starting BK with metadata store: {}", metadataStoreUrl);
         }
diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/zookeeper/LocalBookkeeperEnsemble.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/zookeeper/LocalBookkeeperEnsemble.java
index e8a503c46e0..cf1a30951eb 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/zookeeper/LocalBookkeeperEnsemble.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/zookeeper/LocalBookkeeperEnsemble.java
@@ -194,6 +194,7 @@ public class LocalBookkeeperEnsemble {
                 : createTempDirectory("zktest");
 
         if (this.clearOldData) {
+            LOG.info("Wiping Zookeeper data directory at {}", 
zkDataDir.getAbsolutePath());
             cleanDirectory(zkDataDir);
         }
 
@@ -291,6 +292,7 @@ public class LocalBookkeeperEnsemble {
                     : createTempDirectory("bk" + i + "test");
 
             if (this.clearOldData) {
+                LOG.info("Wiping Bookie data directory at {}", 
bkDataDir.getAbsolutePath());
                 cleanDirectory(bkDataDir);
             }
 
diff --git 
a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/BKCluster.java
 
b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/BKCluster.java
index 8d3a90239ef..fe2b981ffe9 100644
--- 
a/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/BKCluster.java
+++ 
b/pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/BKCluster.java
@@ -232,6 +232,7 @@ public class BKCluster implements AutoCloseable {
         }
 
         if (clusterConf.clearOldData && dataDir.exists()) {
+            log.info("Wiping Bookie data directory at {}", 
dataDir.getAbsolutePath());
             cleanDirectory(dataDir);
         }
 

Reply via email to