This is an automated email from the ASF dual-hosted git repository.
sk0x50 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new ae3c4660ab IGNITE-17917 Unified ignite3db start scripts. Fixes #1337
ae3c4660ab is described below
commit ae3c4660ab9ae0be9a4f4bef84b002e9e392c243
Author: Aleksandr Pakhomov <[email protected]>
AuthorDate: Tue Nov 22 18:59:41 2022 +0200
IGNITE-17917 Unified ignite3db start scripts. Fixes #1337
Signed-off-by: Slava Koptilin <[email protected]>
---
packaging/build.gradle | 24 ++++++-
packaging/cli/build.gradle | 18 ++---
packaging/cli/start.sh | 57 ++--------------
packaging/common/bootstrap-functions.sh | 56 +++++++++++++++
packaging/{cli/start.sh => common/setup-java.sh} | 52 ++------------
.../config/ignite.java.util.logging.properties | 47 -------------
packaging/db/build.gradle | 67 +++++++++++-------
packaging/db/ignite.java.util.logging.properties | 2 +-
packaging/docker/Dockerfile | 3 +-
packaging/docker/docker-entrypoint.sh | 21 +++---
packaging/linux/start.sh | 26 +------
.../{docker/docker-entrypoint.sh => zip/ignite3db} | 56 +++++++++++----
packaging/zip/ignite3db.sh | 79 ----------------------
packaging/zip/{bootstrap-config.env => vars.env} | 25 +++++--
14 files changed, 216 insertions(+), 317 deletions(-)
diff --git a/packaging/build.gradle b/packaging/build.gradle
index 51c75d93a8..5c013bcf9b 100644
--- a/packaging/build.gradle
+++ b/packaging/build.gradle
@@ -24,6 +24,7 @@ plugins {
}
import org.gradle.crypto.checksum.Checksum
+import org.apache.tools.ant.filters.ReplaceTokens
configurations {
dbArtifacts
@@ -41,6 +42,23 @@ dependencies {
dbZip(project(path: ':packaging-db', configuration: 'dbZip'))
}
+def tokens = [
+ INSTALL_DIR : '${IGNITE_HOME}',
+ CONF_DIR : '${IGNITE_HOME}/etc',
+ LIB_DIR : '${IGNITE_HOME}/lib',
+ APP_JAR :
"${project(':ignite-runner').name}-${project(':ignite-runner').version}.jar".toString(),
+ MAIN_CLASS : 'org.apache.ignite.app.IgniteRunner',
+ BOOTSTRAP_FILE_NAME : 'bootstrap-functions.sh',
+ SETUP_JAVA_FILE_NAME: 'setup-java.sh'
+]
+
+task replaceVars(type: Copy) {
+ from("$rootDir/packaging/common")
+ from("$rootDir/packaging/docker/docker-entrypoint.sh")
+ filter(ReplaceTokens, tokens: tokens)
+ into("$buildDir/docker")
+}
+
docker {
name 'apacheignite/ignite3'
dockerfile file('docker/Dockerfile')
@@ -63,14 +81,18 @@ docker {
}
into('bin') {
fileMode 0755
- from('docker/docker-entrypoint.sh')
+ from("$buildDir/docker/docker-entrypoint.sh")
}
into('lib') {
from(configurations.dbArtifacts)
+ from("$buildDir/docker/$tokens.BOOTSTRAP_FILE_NAME")
+ from("$buildDir/docker/$tokens.SETUP_JAVA_FILE_NAME")
}
}
}
+dockerPrepare.dependsOn replaceVars
+
// create an uber zip with all distributions
task allDistZip(type: Zip) {
archiveBaseName = "ignite3"
diff --git a/packaging/cli/build.gradle b/packaging/cli/build.gradle
index cf6c7a725c..e1cfc1dd18 100644
--- a/packaging/cli/build.gradle
+++ b/packaging/cli/build.gradle
@@ -45,11 +45,9 @@ def tokens = [
LIB_DIR : '/usr/lib/ignite3',
LOG_DIR : '${HOME}/.ignite3',
APP_JAR :
"${project(':ignite-cli').name}-${project(':ignite-cli').version}.jar".toString(),
+ SETUP_JAVA_FILE_NAME: 'setup-java.sh',
MAIN_CLASS : 'org.apache.ignite.internal.cli.Main',
- JAVA_OPTS : '',
- ADDITIONAL_OPTS : '',
ARGS : '$@'
-
]
task replaceScriptVars(type: Copy) {
@@ -100,18 +98,19 @@ distributions {
distributionBaseName = 'ignite3-cli'
contents {
into('') {
- from("$rootDir/LICENSE")
- from("$rootDir/NOTICE")
- from("$rootDir/assembly/README.md")
+ from "$rootDir/LICENSE"
+ from "$rootDir/NOTICE"
+ from "$rootDir/assembly/README.md"
}
into('bin') {
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
- from(configurations.cliScripts)
- from(cliStartScript)
+ from configurations.cliScripts
+ from cliStartScript
fileMode = 0755
}
into('lib') {
- from(configurations.cliArtifacts)
+ from configurations.cliArtifacts
+ from "$rootDir/packaging/common/setup-java.sh"
}
}
}
@@ -175,6 +174,7 @@ ospackage {
into(tokens.LIB_DIR) {
from configurations.cliArtifacts
+ from "$rootDir/packaging/common/setup-java.sh"
}
postInstall file("${buildDir}/postInstall.sh")
diff --git a/packaging/cli/start.sh b/packaging/cli/start.sh
index 288e0deb9d..6918836f90 100644
--- a/packaging/cli/start.sh
+++ b/packaging/cli/start.sh
@@ -17,68 +17,21 @@
# limitations under the License.
#
-# LOAD VARIABLES
-if [ -f "@ENV_FILE@" ]; then
- . "@ENV_FILE@"
-fi
+. @LIB_DIR@/@SETUP_JAVA_FILE_NAME@
LOG_DIR="@LOG_DIR@"
-JAVA_OPTS="@JAVA_OPTS@"
-ADDITIONAL_OPTS="@ADDITIONAL_OPTS@"
CLASSPATH="@LIB_DIR@/@APP_JAR@:@LIB_DIR@/*"
MAIN_CLASS="@MAIN_CLASS@"
ARGS="@ARGS@"
-DEFAULT_JVM_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED \
---add-opens java.base/java.lang.invoke=ALL-UNNAMED \
---add-opens java.base/java.lang.reflect=ALL-UNNAMED \
---add-opens java.base/java.io=ALL-UNNAMED \
---add-opens java.base/java.nio=ALL-UNNAMED \
---add-opens java.base/java.math=ALL-UNNAMED \
---add-opens java.base/java.util=ALL-UNNAMED \
---add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
--Dfile.encoding=UTF-8 \
--XX:+HeapDumpOnOutOfMemoryError \
--XX:+ExitOnOutOfMemoryError \
--XX:HeapDumpPath=$LOG_DIR"
-
-
-warn () {
- echo "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
- else
- JAVACMD=$JAVA_HOME/bin/java
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
- Please set the JAVA_HOME variable in your environment to match the
- location of your Java installation."
- fi
-else
- JAVACMD=java
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no
'java' command could be found in your PATH.
- Please set the JAVA_HOME variable in your environment to match the
- location of your Java installation."
-fi
+DEFAULT_JVM_OPTS="-Dfile.encoding=UTF-8 \
+ -XX:+HeapDumpOnOutOfMemoryError \
+ -XX:+ExitOnOutOfMemoryError \
+ -XX:HeapDumpPath=${LOG_DIR}"
CMD="${JAVACMD} \
${DEFAULT_JVM_OPTS} \
-${JAVA_OPTS} \
-${ADDITIONAL_OPTS} \
-classpath ${CLASSPATH} \
${MAIN_CLASS} \
${ARGS}"
diff --git a/packaging/common/bootstrap-functions.sh
b/packaging/common/bootstrap-functions.sh
new file mode 100644
index 0000000000..fa28702046
--- /dev/null
+++ b/packaging/common/bootstrap-functions.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+. @LIB_DIR@/@SETUP_JAVA_FILE_NAME@
+
+
+ADD_OPENS_JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED \
+ --add-opens java.base/java.lang.invoke=ALL-UNNAMED \
+ --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+ --add-opens java.base/java.io=ALL-UNNAMED \
+ --add-opens java.base/java.nio=ALL-UNNAMED \
+ --add-opens java.base/java.math=ALL-UNNAMED \
+ --add-opens java.base/java.util=ALL-UNNAMED \
+ --add-opens java.base/jdk.internal.misc=ALL-UNNAMED "
+
+# used by rpm, deb, zip and docker distributions
+export COMMON_JAVA_OPTS="
+ ${ADD_OPENS_JAVA_OPTS} \
+ -Dio.netty.tryReflectionSetAccessible=true \
+ -Dfile.encoding=UTF-8 \
+ -XX:+HeapDumpOnOutOfMemoryError \
+ -XX:+ExitOnOutOfMemoryError"
+
+export LOGGING_JAVA_OPTS="
+
-Djava.util.logging.config.file=@CONF_DIR@/ignite.java.util.logging.properties \
+ -XX:HeapDumpPath=@LOG_DIR@ \
+
-Xlog:gc=info:file=@LOG_DIR@/${JVM_GC_LOG_NAME}::filecount=${JVM_GC_NUM_LOGS},filesize=${JVM_GC_LOG_SIZE}"
+
+export CLASSPATH="-classpath @INSTALL_DIR@/lib/@APP_JAR@:@INSTALL_DIR@/lib/*
@MAIN_CLASS@"
+
+export JAVA_CMD_WITH_ARGS="${JAVACMD} \
+ ${COMMON_JAVA_OPTS} \
+ ${LOGGING_JAVA_OPTS} \
+ ${CLASSPATH} \
+ ${IGNITE3_EXTRA_JVM_ARGS}"
+
+export APPLICATION_ARGS="\
+ --config-path ${CONFIG_FILE} \
+ --work-dir ${WORK_DIR} \
+ --node-name ${NODE_NAME}"
diff --git a/packaging/cli/start.sh b/packaging/common/setup-java.sh
similarity index 54%
copy from packaging/cli/start.sh
copy to packaging/common/setup-java.sh
index 288e0deb9d..d4a3bfb32a 100644
--- a/packaging/cli/start.sh
+++ b/packaging/common/setup-java.sh
@@ -17,32 +17,6 @@
# limitations under the License.
#
-# LOAD VARIABLES
-if [ -f "@ENV_FILE@" ]; then
- . "@ENV_FILE@"
-fi
-
-LOG_DIR="@LOG_DIR@"
-JAVA_OPTS="@JAVA_OPTS@"
-ADDITIONAL_OPTS="@ADDITIONAL_OPTS@"
-CLASSPATH="@LIB_DIR@/@APP_JAR@:@LIB_DIR@/*"
-MAIN_CLASS="@MAIN_CLASS@"
-ARGS="@ARGS@"
-
-DEFAULT_JVM_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED \
---add-opens java.base/java.lang.invoke=ALL-UNNAMED \
---add-opens java.base/java.lang.reflect=ALL-UNNAMED \
---add-opens java.base/java.io=ALL-UNNAMED \
---add-opens java.base/java.nio=ALL-UNNAMED \
---add-opens java.base/java.math=ALL-UNNAMED \
---add-opens java.base/java.util=ALL-UNNAMED \
---add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
--Dfile.encoding=UTF-8 \
--XX:+HeapDumpOnOutOfMemoryError \
--XX:+ExitOnOutOfMemoryError \
--XX:HeapDumpPath=$LOG_DIR"
-
-
warn () {
echo "$*"
} >&2
@@ -55,33 +29,21 @@ die () {
} >&2
# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+if [ -n "${JAVA_HOME}" ] ; then
+ if [ -x "${JAVA_HOME}/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
+ export JAVACMD=${JAVA_HOME}/jre/sh/java
else
- JAVACMD=$JAVA_HOME/bin/java
+ export JAVACMD=${JAVA_HOME}/bin/java
fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+ if [ ! -x "${JAVACMD}" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: ${JAVA_HOME}
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD=java
+ export JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no
'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
-
-
-CMD="${JAVACMD} \
-${DEFAULT_JVM_OPTS} \
-${JAVA_OPTS} \
-${ADDITIONAL_OPTS} \
--classpath ${CLASSPATH} \
-${MAIN_CLASS} \
-${ARGS}"
-
-${CMD}
-
diff --git a/packaging/config/ignite.java.util.logging.properties
b/packaging/config/ignite.java.util.logging.properties
deleted file mode 100644
index 5825d44f4d..0000000000
--- a/packaging/config/ignite.java.util.logging.properties
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#########################################################################
-# Default java.util.logging configuration for Ignite instance.
-#
-# To use another config file use `java.util.logging.config.file` system
-# property. For example `java -Djava.util.logging.config.file=myfile`
-#########################################################################
-
-#
-# Comma-separated list of logging "handlers". Note that some of them may be
-# reconfigured (or even removed) at runtime according to system properties.
-handlers=java.util.logging.FileHandler
-
-#
-# Default global logging level.
-# This specifies which kinds of events are logged across all loggers.
-# For any given category this global level can be overridden by a category
-# specific level.
-# Note that handlers also have a separate level setting to limit messages
-# printed through it.
-#
-.level=INFO
-
-# Console handler logs all messages with importance level `SEVERE` and above
-# into standard error stream (`System.err`).
-#
-java.util.logging.FileHandler.formatter =
org.apache.ignite.lang.JavaLoggerFormatter
-java.util.logging.FileHandler.pattern = ./ignite3db-%g.log
-java.util.logging.FileHandler.level = INFO
-java.util.logging.FileHandler.limit = 10485760
-java.util.logging.FileHandler.count = 10
diff --git a/packaging/db/build.gradle b/packaging/db/build.gradle
index e04c748803..4e17455082 100644
--- a/packaging/db/build.gradle
+++ b/packaging/db/build.gradle
@@ -35,8 +35,37 @@ dependencies {
dbArtifacts(project(':ignite-runner'))
}
+def tokens = [
+ PRODUCT_NAME : 'ignite3db',
+ PACKAGE_NAME : 'ignite3-db',
+ PRODUCT_DISPLAY_NAME: 'Apache Ignite',
+ APP_JAR :
"${project(':ignite-runner').name}-${project(':ignite-runner').version}.jar".toString(),
+ MAIN_CLASS : 'org.apache.ignite.app.IgniteRunner',
+ VARS_FILE_NAME : 'vars.env',
+ BOOTSTRAP_FILE_NAME : 'bootstrap-functions.sh',
+ SETUP_JAVA_FILE_NAME: 'setup-java.sh'
+]
+
// ZIP packaging
+def zipStartScriptTokens = tokens + [
+ LOG_DIR : '${IGNITE_HOME}/log',
+ APP_LOG_DIR : 'log', // java logging does not support env
variables, using relative path here
+ LIB_DIR : '${IGNITE_HOME}/lib',
+ CONF_DIR : '${IGNITE_HOME}/etc',
+ INSTALL_DIR : '${IGNITE_HOME}'
+]
+
+task replaceZipScriptVars(type: Copy) {
+ from("$rootDir/packaging/common")
+ from("$rootDir/packaging/zip")
+ from("$rootDir/packaging/db/ignite.java.util.logging.properties")
+
+ filter(ReplaceTokens, tokens: zipStartScriptTokens)
+
+ into("$buildDir/zip/")
+}
+
distributions {
main {
distributionBaseName = 'ignite3-db'
@@ -56,24 +85,25 @@ distributions {
from("$rootDir/assembly/README.md")
}
into('etc') {
- from("$rootDir/packaging/zip/bootstrap-config.env")
+ from("$buildDir/zip/${zipStartScriptTokens.VARS_FILE_NAME}")
from("$rootDir/packaging/config/ignite-config.conf")
-
from("$rootDir/packaging/config/ignite.java.util.logging.properties")
+ from("$buildDir/zip/ignite.java.util.logging.properties")
}
into('bin') {
fileMode 0755
- from("$rootDir/packaging/zip/ignite3db.sh")
- rename {
- "ignite3db"
- }
+ from("$buildDir/zip/ignite3db")
}
into('lib') {
from configurations.dbArtifacts
+
from("$buildDir/zip/${zipStartScriptTokens.BOOTSTRAP_FILE_NAME}")
+
from("$buildDir/zip/${zipStartScriptTokens.SETUP_JAVA_FILE_NAME}")
}
}
}
}
+distZip.dependsOn replaceZipScriptVars
+
task createChecksums(type: Checksum) {
//TODO: remove distribution name hard code IGNITE-18092
files =
files(file("${buildDir}/distributions/ignite3-db-${project.version}.zip"))
@@ -84,6 +114,7 @@ task createChecksums(type: Checksum) {
distTar.finalizedBy(createChecksums)
distZip.finalizedBy(createChecksums)
+
// Expose zip artifacts to be consumed by others
configurations {
dbZip {
@@ -104,40 +135,24 @@ signing {
// RPM/DEB packaging
-def javaArgs = '-Dio.netty.tryReflectionSetAccessible=true ' +
-
'-Djava.util.logging.config.file=$CONFIG_PATH/ignite.java.util.logging.properties'
-
-def args = '--config-path $IGNITE_CONFIG_FILE --work-dir $WORK_PATH $NODE_NAME'
-
-def tokens = [
- PRODUCT_NAME : 'ignite3db',
- PACKAGE_NAME : 'ignite3-db',
- PRODUCT_DISPLAY_NAME: 'Apache Ignite',
- APP_JAR :
"${project(':ignite-runner').name}-${project(':ignite-runner').version}.jar".toString(),
- MAIN_CLASS : 'org.apache.ignite.app.IgniteCliRunner',
- ADDITIONAL_OPTS : '',
- JAVA_OPTS : javaArgs,
- ARGS : args
-]
-
def packageTokens = tokens + [
USERNAME : 'ignite3',
GROUPNAME : 'ignite3',
INSTALL_DIR : '/usr/share/ignite3db',
CONF_DIR : '/usr/share/ignite3db/etc',
LOG_DIR : '/var/log/ignite3db',
+ APP_LOG_DIR : '/var/log/ignite3db',
PID_DIR : '/var/run/ignite3db',
LIB_DIR : '/usr/share/ignite3db/lib',
IGNITE_WORK_DIR : '/usr/share/ignite3db/work',
- VARS_FILE_NAME : 'vars.env',
- IGNITE_CONF_FILE : 'ignite-config.conf',
- ENV_FILE : '/usr/share/ignite3db/etc/vars.env'
+ IGNITE_CONF_FILE : 'ignite-config.conf'
]
task replacePackageScriptVars(type: Copy) {
from("${rootDir}/packaging/linux")
from("${rootDir}/packaging/db/ignite.java.util.logging.properties")
+ from("$rootDir/packaging/common")
filter(ReplaceTokens, tokens: packageTokens)
into("${buildDir}/linux")
}
@@ -189,6 +204,8 @@ ospackage {
into("lib") {
from configurations.dbArtifacts
+ from("$buildDir/linux/${zipStartScriptTokens.BOOTSTRAP_FILE_NAME}")
+
from("$buildDir/linux/${zipStartScriptTokens.SETUP_JAVA_FILE_NAME}")
}
into("etc") {
diff --git a/packaging/db/ignite.java.util.logging.properties
b/packaging/db/ignite.java.util.logging.properties
index c173554dd5..a1ebb74acf 100644
--- a/packaging/db/ignite.java.util.logging.properties
+++ b/packaging/db/ignite.java.util.logging.properties
@@ -41,7 +41,7 @@ handlers=java.util.logging.FileHandler
# into standard error stream (`System.err`).
#
java.util.logging.FileHandler.formatter =
org.apache.ignite.lang.JavaLoggerFormatter
-java.util.logging.FileHandler.pattern = @LOG_DIR@/ignite3db-%g.log
+java.util.logging.FileHandler.pattern = @APP_LOG_DIR@/ignite3db-%g.log
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.limit = 10485760
java.util.logging.FileHandler.count = 10
diff --git a/packaging/docker/Dockerfile b/packaging/docker/Dockerfile
index 4a01c3e672..560aea914d 100644
--- a/packaging/docker/Dockerfile
+++ b/packaging/docker/Dockerfile
@@ -2,8 +2,7 @@ FROM eclipse-temurin:11-jre
ENV IGNITE_HOME /opt/ignite
-ENV LIBS_PATH $IGNITE_HOME/lib
-ENV CONFIG_PATH $IGNITE_HOME/etc
+ENV LIBS_DIR $IGNITE_HOME/lib
ENV IGNITE_NODE_NAME defaultNode
ENV IGNITE_WORK_DIR $IGNITE_HOME/work
diff --git a/packaging/docker/docker-entrypoint.sh
b/packaging/docker/docker-entrypoint.sh
index 420a10cd4a..96e71b77b9 100644
--- a/packaging/docker/docker-entrypoint.sh
+++ b/packaging/docker/docker-entrypoint.sh
@@ -17,17 +17,14 @@
# limitations under the License.
#
-CMD="java \
---add-opens java.base/java.lang=ALL-UNNAMED \
---add-opens java.base/java.lang.invoke=ALL-UNNAMED \
---add-opens java.base/java.lang.reflect=ALL-UNNAMED \
---add-opens java.base/java.io=ALL-UNNAMED \
---add-opens java.base/java.nio=ALL-UNNAMED \
---add-opens java.base/java.math=ALL-UNNAMED \
---add-opens java.base/java.util=ALL-UNNAMED \
---add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
--Dio.netty.tryReflectionSetAccessible=true \
--Djava.util.logging.config.file=$CONFIG_PATH/ignite.java.util.logging.properties
\
--classpath $LIBS_PATH/ignite-runner.jar:$LIBS_PATH/*
org.apache.ignite.app.IgniteRunner"
+. @LIB_DIR@/@BOOTSTRAP_FILE_NAME@
+
+LOGGING_JAVA_OPTS="-Djava.util.logging.config.file=@CONF_DIR@/ignite.java.util.logging.properties"
+
+CMD="${JAVACMD} \
+ ${COMMON_JAVA_OPTS} \
+ ${LOGGING_JAVA_OPTS} \
+ ${CLASSPATH} \
+ ${IGNITE3_EXTRA_JVM_ARGS}"
exec $CMD "$@"
diff --git a/packaging/linux/start.sh b/packaging/linux/start.sh
index a4121ae007..bdbc1d5337 100644
--- a/packaging/linux/start.sh
+++ b/packaging/linux/start.sh
@@ -17,27 +17,7 @@
#
. @CONF_DIR@/@VARS_FILE_NAME@
+. @LIB_DIR@/@BOOTSTRAP_FILE_NAME@
-CMD="java \
---add-opens java.base/java.lang=ALL-UNNAMED \
---add-opens java.base/java.lang.invoke=ALL-UNNAMED \
---add-opens java.base/java.lang.reflect=ALL-UNNAMED \
---add-opens java.base/java.io=ALL-UNNAMED \
---add-opens java.base/java.nio=ALL-UNNAMED \
---add-opens java.base/java.math=ALL-UNNAMED \
---add-opens java.base/java.util=ALL-UNNAMED \
---add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
--Dfile.encoding=UTF-8 \
--XX:+HeapDumpOnOutOfMemoryError \
--XX:+ExitOnOutOfMemoryError \
--XX:HeapDumpPath=@LOG_DIR@ \
--Xlog:gc=info:file=@LOG_DIR@/${JVM_GC_LOG_NAME}::filecount=${JVM_GC_NUM_LOGS},filesize=${JVM_GC_LOG_SIZE}
\
--Dio.netty.tryReflectionSetAccessible=true \
--Djava.util.logging.config.file=@CONF_DIR@/ignite.java.util.logging.properties
\
-${IGNITE3_EXTRA_JVM_ARGS} \
--classpath @INSTALL_DIR@/lib:@INSTALL_DIR@/lib/*
org.apache.ignite.app.IgniteRunner \
---config-path ${CONFIG_FILE} \
---work-dir ${WORK_DIR} \
---node-name ${NODE_NAME}"
-
-${CMD}
+CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}"
+$CMD
diff --git a/packaging/docker/docker-entrypoint.sh b/packaging/zip/ignite3db
old mode 100644
new mode 100755
similarity index 53%
copy from packaging/docker/docker-entrypoint.sh
copy to packaging/zip/ignite3db
index 420a10cd4a..9e90f2fdd2
--- a/packaging/docker/docker-entrypoint.sh
+++ b/packaging/zip/ignite3db
@@ -17,17 +17,45 @@
# limitations under the License.
#
-CMD="java \
---add-opens java.base/java.lang=ALL-UNNAMED \
---add-opens java.base/java.lang.invoke=ALL-UNNAMED \
---add-opens java.base/java.lang.reflect=ALL-UNNAMED \
---add-opens java.base/java.io=ALL-UNNAMED \
---add-opens java.base/java.nio=ALL-UNNAMED \
---add-opens java.base/java.math=ALL-UNNAMED \
---add-opens java.base/java.util=ALL-UNNAMED \
---add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
--Dio.netty.tryReflectionSetAccessible=true \
--Djava.util.logging.config.file=$CONFIG_PATH/ignite.java.util.logging.properties
\
--classpath $LIBS_PATH/ignite-runner.jar:$LIBS_PATH/*
org.apache.ignite.app.IgniteRunner"
-
-exec $CMD "$@"
+SCRIPT=$(readlink -f "$0")
+SCRIPT_DIR=$(dirname "$SCRIPT")
+
+cd ${SCRIPT_DIR} || exit
+cd .. # SCRIPT_DIR points at bin
+
+# if IGNITE_HOME is not set than it will be parent directory for bin
+if [ -z ${IGNITE_HOME+x} ]; then IGNITE_HOME=$(pwd); fi
+
+
+. @CONF_DIR@/@VARS_FILE_NAME@
+. ${IGNITE_HOME}/lib/@BOOTSTRAP_FILE_NAME@
+
+cd ${IGNITE_HOME} || exit
+
+start() {
+ CMD="${JAVA_CMD_WITH_ARGS} ${APPLICATION_ARGS}"
+ $CMD >>/dev/null 2>&1 </dev/null & echo $! >${IGNITE_HOME}/pid
+}
+
+stop() {
+ kill -9 "$(cat ${IGNITE_HOME}/pid)"
+}
+
+case $1 in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+restart)
+ stop
+ start
+ ;;
+*)
+ echo "Unknown command '$1', available commands: start, stop, restart"
+ exit 1
+ ;;
+esac
+
+
diff --git a/packaging/zip/ignite3db.sh b/packaging/zip/ignite3db.sh
deleted file mode 100755
index dff339f131..0000000000
--- a/packaging/zip/ignite3db.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-############# STAGE 1: SETUP ENV ###############
-
- # LOAD VARIABLES
- if [ -z ${IGNITE_HOME+x} ]; then IGNITE_HOME=$(pwd); fi
-
- . $IGNITE_HOME/etc/bootstrap-config.env
-
- # Export these variables so that IgniteRunner can use them as default values
- export IGNITE_NODE_NAME=$NODE_NAME
- export IGNITE_WORK_DIR=$WORK_PATH
- export IGNITE_CONFIG_PATH=$IGNITE_CONFIG_FILE
-
-
-start() {
-
- ############# STAGE 2: BUILD CMD ###############
-
- # FORM A START COMMAND
- CMD="java \
- --add-opens java.base/java.lang=ALL-UNNAMED \
- --add-opens java.base/java.lang.invoke=ALL-UNNAMED \
- --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
- --add-opens java.base/java.io=ALL-UNNAMED \
- --add-opens java.base/java.nio=ALL-UNNAMED \
- --add-opens java.base/java.math=ALL-UNNAMED \
- --add-opens java.base/java.util=ALL-UNNAMED \
- --add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
- -Dio.netty.tryReflectionSetAccessible=true \
-
-Djava.util.logging.config.file=$CONFIG_PATH/ignite.java.util.logging.properties
\
- -classpath $LIBS_PATH/ignite-runner.jar:$LIBS_PATH/*
org.apache.ignite.app.IgniteRunner"
-
- ############# STAGE 3: RUN CMD, REPORT ###############
- exec ${CMD} >>${LOG_OUT_FILE:-/dev/null} 2>&1 < /dev/null & jobs -p >
${IGNITE_HOME}/pid
-
- # TODO: SAVE PROCESS PID AND LINK IT WITH THE NODE NAME
- # TODO: WAIT FOR NODE IS STARTED
- # TODO: REPORT SUCCESS OR FAILURE
- # TODO: SHOW HOW TO CONNECT TO THE STARTED NODE
-}
-
-stop() {
- kill -9 "$(cat ${IGNITE_HOME}/pid)"
-}
-
-case $1 in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- *)
- echo "Unknown command '$1', available commands: start, stop,
restart"
- exit 1
- ;;
- esac
diff --git a/packaging/zip/bootstrap-config.env b/packaging/zip/vars.env
similarity index 62%
rename from packaging/zip/bootstrap-config.env
rename to packaging/zip/vars.env
index 2c224ff62e..023fee1d98 100644
--- a/packaging/zip/bootstrap-config.env
+++ b/packaging/zip/vars.env
@@ -17,11 +17,22 @@
NODE_NAME=defaultNode
-WORK_PATH=$IGNITE_HOME/work
-LOGS_PATH=$IGNITE_HOME/log
-LIBS_PATH=$IGNITE_HOME/lib
-BIN_PATH=$IGNITE_HOME/bin
-CONFIG_PATH=$IGNITE_HOME/etc
+WORK_DIR=${IGNITE_HOME}/work
+LOG_DIR=${IGNITE_HOME}/log
+LIBS_DIR=${IGNITE_HOME}/lib
+CONF_DIR=${IGNITE_HOME}/etc
+INSTALL_DIR=${IGNITE_HOME}
-IGNITE_CONFIG_FILE=$CONFIG_PATH/ignite-config.conf
-LOG_OUT_FILE=$LOGS_PATH/${NODE_NAME}.log
+LOG_FILE_PATTERN=${LOG_DIR}/ignite3db-%g.log
+CONFIG_FILE=${CONF_DIR}/ignite-config.conf
+
+#JVM props
+JVM_MAX_MEM="16384m"
+JVM_MIN_MEM="16384m"
+JVM_GC="G1GC"
+JVM_G1HeapRegionSize="32M"
+JVM_GC_LOG_NAME="gc.log.$(date -u +%Y%m%d_%H%M%S)"
+JVM_GC_LOG_SIZE="104857600"
+JVM_GC_NUM_LOGS="10"
+##For any additional users settings
+IGNITE3_EXTRA_JVM_ARGS=