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

qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new c2d9ab4  [IOTDB-574] Specify configuration when start iotdb  (#1000)
c2d9ab4 is described below

commit c2d9ab425721225dfc69b09f3340518ae296752e
Author: Houliang Qi <[email protected]>
AuthorDate: Fri Apr 10 11:00:26 2020 +0800

    [IOTDB-574] Specify configuration when start iotdb  (#1000)
    
    * IOTDB-574@Specify configuration when start iotdb
---
 server/pom.xml                                     |  4 +++
 .../src/assembly/resources/sbin/start-server.bat   | 16 ++++++++-
 server/src/assembly/resources/sbin/start-server.sh | 20 ++++++++++-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  | 39 +++++++++++++++++++++-
 .../java/org/apache/iotdb/db/service/IoTDB.java    |  5 ++-
 .../iotdb/tsfile/common/conf/TSFileDescriptor.java |  2 ++
 6 files changed, 82 insertions(+), 4 deletions(-)

diff --git a/server/pom.xml b/server/pom.xml
index 618f768..d18760a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -98,6 +98,10 @@
             <artifactId>metrics-json</artifactId>
         </dependency>
         <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+        </dependency>
+        <dependency>
             <groupId>io.moquette</groupId>
             <artifactId>moquette-broker</artifactId>
         </dependency>
diff --git a/server/src/assembly/resources/sbin/start-server.bat 
b/server/src/assembly/resources/sbin/start-server.bat
index 5079ecb..1ebf8e7 100755
--- a/server/src/assembly/resources/sbin/start-server.bat
+++ b/server/src/assembly/resources/sbin/start-server.bat
@@ -58,6 +58,19 @@ popd
 set IOTDB_CONF=%IOTDB_HOME%\conf
 set IOTDB_LOGS=%IOTDB_HOME%\logs
 
+@setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
+set is_conf_path=false
+for %%i in (%*) do (
+       IF "%%i" == "-c" (
+               set is_conf_path=true
+       ) ELSE IF "!is_conf_path!" == "true" (
+               set is_conf_path=false
+               set IOTDB_CONF=%%i
+       ) ELSE (
+               set CONF_PARAMS=!CONF_PARAMS! %%i
+       )
+)
+
 IF EXIST "%IOTDB_CONF%\iotdb-env.bat" (
     CALL "%IOTDB_CONF%\iotdb-env.bat" %1
     ) ELSE (
@@ -73,6 +86,7 @@ set JAVA_OPTS=-ea^
  -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
  -DIOTDB_HOME="%IOTDB_HOME%"^
  -DTSFILE_HOME="%IOTDB_HOME%"^
+ -DTSFILE_CONF="%IOTDB_CONF%"^
  -DIOTDB_CONF="%IOTDB_CONF%"
 
 @REM ***** CLASSPATH library setting *****
@@ -93,7 +107,7 @@ goto :eof
 
 rem echo CLASSPATH: %CLASSPATH%
 
-"%JAVA_HOME%\bin\java" %JAVA_OPTS% %IOTDB_HEAP_OPTS% -cp %CLASSPATH% 
%IOTDB_JMX_OPTS% %MAIN_CLASS%
+"%JAVA_HOME%\bin\java" %JAVA_OPTS% %IOTDB_HEAP_OPTS% -cp %CLASSPATH% 
%IOTDB_JMX_OPTS% %MAIN_CLASS% %CONF_PARAMS%
 goto finally
 
 :err
diff --git a/server/src/assembly/resources/sbin/start-server.sh 
b/server/src/assembly/resources/sbin/start-server.sh
index 009e65a..fa3f654 100755
--- a/server/src/assembly/resources/sbin/start-server.sh
+++ b/server/src/assembly/resources/sbin/start-server.sh
@@ -30,6 +30,23 @@ fi
 IOTDB_CONF=${IOTDB_HOME}/conf
 # IOTDB_LOGS=${IOTDB_HOME}/logs
 
+is_conf_path=false
+for arg do
+  shift
+  if [ "$arg" == "-c" ]; then
+    is_conf_path=true
+    continue
+  fi
+  if [ $is_conf_path == true ]; then
+    IOTDB_CONF=$arg
+    is_conf_path=false
+    continue
+  fi
+  set -- "$@" "$arg"
+done
+
+CONF_PARAMS=$*
+
 if [ -f "$IOTDB_CONF/iotdb-env.sh" ]; then
     if [ "$#" -ge "1" -a "$1" == "printgc" ]; then
       . "$IOTDB_CONF/iotdb-env.sh" "printgc"
@@ -53,8 +70,9 @@ launch_service()
        iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}"
        iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}"
        iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}"
+       iotdb_parms="$iotdb_parms -DTSFILE_CONF=${IOTDB_CONF}"
        iotdb_parms="$iotdb_parms -Dname=iotdb\.IoTDB"
-       exec "$JAVA" $iotdb_parms $IOTDB_JMX_OPTS $iotdb_parms -cp "$CLASSPATH" 
 "$class"
+       exec "$JAVA" $iotdb_parms $IOTDB_JMX_OPTS $iotdb_parms -cp "$CLASSPATH" 
 "$class" $CONF_PARAMS
        return $?
 }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java 
b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 0c94ac7..2931669 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -18,6 +18,12 @@
  */
 package org.apache.iotdb.db.conf;
 
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
 import org.apache.iotdb.db.conf.directories.DirectoryManager;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.utils.FilePathUtils;
@@ -35,6 +41,7 @@ public class IoTDBDescriptor {
 
   private static final Logger logger = 
LoggerFactory.getLogger(IoTDBDescriptor.class);
   private IoTDBConfig conf = new IoTDBConfig();
+  private static CommandLine commandLine;
 
   private IoTDBDescriptor() {
     loadProps();
@@ -48,6 +55,35 @@ public class IoTDBDescriptor {
     return conf;
   }
 
+  public void replaceProps(String[] params) {
+    Options options = new Options();
+    Option rpcPort = new Option("rpc_port", "rpc_port", true, "The jdbc 
service listens on the port");
+    rpcPort.setRequired(false);
+    options.addOption(rpcPort);
+
+    boolean ok = parseCommandLine(options, params);
+    if (!ok) {
+      logger.error("replaces properties failed, use default conf params");
+      return;
+    } else {
+      if (commandLine.hasOption("rpc_port")) {
+        
conf.setRpcPort(Integer.parseInt(commandLine.getOptionValue("rpc_port")));
+        logger.debug("replace rpc port with={}", conf.getRpcPort());
+      }
+    }
+  }
+
+  private boolean parseCommandLine(Options options, String[] params) {
+    try {
+      CommandLineParser parser = new DefaultParser();
+      commandLine = parser.parse(options, params);
+    } catch (ParseException e) {
+      logger.error("parse conf params failed, {}", e.toString());
+      return false;
+    }
+    return true;
+  }
+
   private String getPropsUrl() {
     String url = System.getProperty(IoTDBConstant.IOTDB_CONF, null);
     if (url == null) {
@@ -585,7 +621,8 @@ public class IoTDBDescriptor {
             maxMemoryAvailable * Integer.parseInt(proportions[3].trim()) / 
proportionSum);
       } catch (Exception e) {
         throw new RuntimeException(
-            "Each subsection of configuration item 
filemeta_chunkmeta_free_memory_proportion should be an integer, which is "
+            "Each subsection of configuration item 
filemeta_chunkmeta_free_memory_proportion should be an"
+                + " integer, which is "
                 + queryMemoryAllocateProportion);
       }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java 
b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index 022bfbc..7ff60bc 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -50,6 +50,9 @@ public class IoTDB implements IoTDBMBean {
   }
 
   public static void main(String[] args) {
+    if (args.length > 0) {
+      IoTDBDescriptor.getInstance().replaceProps(args);
+    }
     IoTDBConfigCheck.getInstance().checkConfig();
     IoTDB daemon = IoTDB.getInstance();
     daemon.active();
@@ -122,7 +125,7 @@ public class IoTDB implements IoTDBMBean {
     logger.info("IoTDB is deactivated.");
   }
 
-  private void initMManager(){
+  private void initMManager() {
     MManager.getInstance().init();
     IoTDBConfigDynamicAdapter.getInstance().setInitialized(true);
     logger.info(
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
index 925cf58..2ccee2f 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/conf/TSFileDescriptor.java
@@ -95,6 +95,8 @@ public class TSFileDescriptor {
           url = u.getFile();
         }
       }
+    } else {
+      url += (File.separatorChar + TSFileConfig.CONFIG_FILE_NAME);
     }
     try {
       inputStream = new FileInputStream(new File(url));

Reply via email to