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

[pulsar] branch master updated: [fix][broker] Fix misleading -c option in pulsar standalone (#16838)

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

zike 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 3f109d6cb7f [fix][broker] Fix misleading -c option in pulsar standalone (#16838)
3f109d6cb7f is described below

commit 3f109d6cb7f128a5f8331e33477fd69c3c26d531
Author: Zike Yang <zi...@apache.org>
AuthorDate: Mon Aug 1 16:48:39 2022 +0800

    [fix][broker] Fix misleading -c option in pulsar standalone (#16838)
    
    Motivation
    The -c option offered in the standalone is missleading.
    An error occurs when pass --config
    
    Modification
    * Add `-Dpulsar.config.file` to specify the pulsar standalone config file
    * The priority for config file loading: using `-c or --config` > using `-Dpulsar.config.file`
---
 bin/pulsar                                            |  2 +-
 .../main/java/org/apache/pulsar/PulsarStandalone.java |  2 +-
 .../org/apache/pulsar/PulsarStandaloneStarter.java    | 19 ++++++++++++++++---
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/bin/pulsar b/bin/pulsar
index d56376a0bf6..205659f8d18 100755
--- a/bin/pulsar
+++ b/bin/pulsar
@@ -371,7 +371,7 @@ elif [ $COMMAND == "functions-worker" ]; then
     exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.functions.worker.FunctionWorkerStarter -c $PULSAR_WORKER_CONF $@
 elif [ $COMMAND == "standalone" ]; then
     PULSAR_LOG_FILE=${PULSAR_LOG_FILE:-"pulsar-standalone.log"}
-    exec $JAVA $LOG4J2_SHUTDOWN_HOOK_DISABLED $OPTS ${ZK_OPTS} -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.PulsarStandaloneStarter --config $PULSAR_STANDALONE_CONF $@
+    exec $JAVA $LOG4J2_SHUTDOWN_HOOK_DISABLED $OPTS ${ZK_OPTS} -Dpulsar.log.file=$PULSAR_LOG_FILE -Dpulsar.config.file=$PULSAR_STANDALONE_CONF org.apache.pulsar.PulsarStandaloneStarter $@
 elif [ ${COMMAND} == "autorecovery" ]; then
     PULSAR_LOG_FILE=${PULSAR_LOG_FILE:-"pulsar-autorecovery.log"}
     exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.bookkeeper.replication.AutoRecoveryMain --conf $PULSAR_BOOKKEEPER_CONF $@
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 8d19971880f..8866922e103 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandalone.java
@@ -210,7 +210,7 @@ public class PulsarStandalone implements AutoCloseable {
         return help;
     }
 
-    @Parameter(names = { "-c", "--config" }, description = "Configuration file path", required = true)
+    @Parameter(names = { "-c", "--config" }, description = "Configuration file path")
     private String configFile;
 
     @Parameter(names = { "--wipe-data" }, description = "Clean up previous ZK/BK data")
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
index 58d9b369573..f2c397e170d 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
@@ -21,6 +21,7 @@ package org.apache.pulsar;
 import static org.apache.commons.lang3.StringUtils.isBlank;
 import com.beust.jcommander.JCommander;
 import com.beust.jcommander.Parameter;
+import com.google.common.base.Strings;
 import java.io.FileInputStream;
 import java.util.Arrays;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +33,9 @@ import org.apache.pulsar.common.util.CmdGenerateDocs;
 
 @Slf4j
 public class PulsarStandaloneStarter extends PulsarStandalone {
+
+    private static final String PULSAR_CONFIG_FILE = "pulsar.config.file";
+
     @Parameter(names = {"-g", "--generate-docs"}, description = "Generate docs")
     private boolean generateDocs = false;
 
@@ -41,9 +45,18 @@ public class PulsarStandaloneStarter extends PulsarStandalone {
         try {
             jcommander.addObject(this);
             jcommander.parse(args);
-            if (this.isHelp() || isBlank(this.getConfigFile())) {
+            if (this.isHelp()) {
                 jcommander.usage();
-                return;
+                System.exit(0);
+            }
+            if (Strings.isNullOrEmpty(this.getConfigFile())) {
+                String configFile = System.getProperty(PULSAR_CONFIG_FILE);
+                if (Strings.isNullOrEmpty(configFile)) {
+                    throw new IllegalArgumentException(
+                            "Config file not specified. Please use -c, --config-file or -Dpulsar.config.file to "
+                                    + "specify the config file.");
+                }
+                this.setConfigFile(configFile);
             }
             if (this.generateDocs) {
                 CmdGenerateDocs cmd = new CmdGenerateDocs("pulsar");
@@ -60,7 +73,7 @@ public class PulsarStandaloneStarter extends PulsarStandalone {
         } catch (Exception e) {
             jcommander.usage();
             log.error(e.getMessage());
-            return;
+            System.exit(1);
         }
 
         try (FileInputStream inputStream = new FileInputStream(this.getConfigFile())) {