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));