Skip to content

Commit c19a8cb

Browse files
committed
IGNITE-24814 Allow overriding variables in start script
1 parent bd006ed commit c19a8cb

7 files changed

Lines changed: 203 additions & 4 deletions

File tree

packaging/common/linux/bootstrap-functions.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ if [ -z "${CLASSPATH+x}" ]; then
5050
exit 1
5151
fi
5252

53+
# Append extra classpath entries (e.g., lib/ext/* for log4j or other libs)
54+
if [ "${IGNITE3_EXTRA_CLASSPATH+set}" = "set" ] && [ -n "${IGNITE3_EXTRA_CLASSPATH}" ]; then
55+
CLASSPATH="${CLASSPATH}:${IGNITE3_EXTRA_CLASSPATH}"
56+
fi
57+
5358
MAIN_CLASS="@MAIN_CLASS@"
5459

5560
export JAVA_CMD_WITH_ARGS="${JAVACMD} \

packaging/common/windows/bootstrap-functions.bat

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ set LOGGING_JAVA_OPTS=-Djava.util.logging.config.file="%CONF_DIR%\ignite.java.ut
2525
-XX:HeapDumpPath="%LOG_DIR%" ^
2626
-Xlog:gc=info:file="%LOG_DIR%\%JVM_GC_LOG_NAME%"::filecount=%JVM_GC_NUM_LOGS%,filesize=%JVM_GC_LOG_SIZE%
2727

28-
set CLASSPATH=-classpath "%LIBS_DIR%\*" @MAIN_CLASS@
28+
if defined IGNITE3_EXTRA_CLASSPATH (
29+
set CLASSPATH=-classpath "%LIBS_DIR%\*;%IGNITE3_EXTRA_CLASSPATH%" @MAIN_CLASS@
30+
) else (
31+
set CLASSPATH=-classpath "%LIBS_DIR%\*" @MAIN_CLASS@
32+
)
2933

3034
set JAVA_MEMORY_OPTIONS=-Xmx%JVM_MAX_MEM% -Xms%JVM_MIN_MEM%
3135

packaging/db/linux/service/vars.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ JVM_GC_LOG_NAME="gc.log.$(date -u +%Y%m%d_%H%M%S)"
3232
JVM_GC_LOG_SIZE="100m"
3333
JVM_GC_NUM_LOGS="10"
3434
##For any additional users settings
35-
IGNITE3_EXTRA_JVM_ARGS=
35+
IGNITE3_EXTRA_JVM_ARGS=${IGNITE3_EXTRA_JVM_ARGS:-}

packaging/db/zip/linux/ignite3db

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,103 @@ cd .. # now SCRIPT_DIR points at parent dir for bin
2828
if [ -z ${IGNITE_HOME+x} ]; then IGNITE_HOME=$(pwd); fi
2929

3030
. @CONF_DIR@/@VARS_FILE_NAME@
31+
32+
# Save base values before any overrides
33+
BASE_NODE_NAME="${NODE_NAME}"
34+
BASE_WORK_DIR="${WORK_DIR}"
35+
BASE_LOG_DIR="${LOG_DIR}"
36+
BASE_CONFIG_FILE="${CONFIG_FILE}"
37+
38+
# Parses command line arguments into CLI_* variables.
39+
parse_args() {
40+
CLI_NODE_NAME=""
41+
CLI_WORK_DIR=""
42+
CLI_LOG_DIR=""
43+
CLI_CONFIG_FILE=""
44+
CLI_EXTRA_CLASSPATH=""
45+
46+
while [ $# -gt 0 ]; do
47+
case "$1" in
48+
--node-name)
49+
shift
50+
if [ $# -eq 0 ]; then echo "Error: --node-name requires a value" >&2; exit 1; fi
51+
CLI_NODE_NAME="$1"
52+
;;
53+
--work-dir)
54+
shift
55+
if [ $# -eq 0 ]; then echo "Error: --work-dir requires a value" >&2; exit 1; fi
56+
CLI_WORK_DIR="$1"
57+
;;
58+
--log-dir)
59+
shift
60+
if [ $# -eq 0 ]; then echo "Error: --log-dir requires a value" >&2; exit 1; fi
61+
CLI_LOG_DIR="$1"
62+
;;
63+
--config)
64+
shift
65+
if [ $# -eq 0 ]; then echo "Error: --config requires a value" >&2; exit 1; fi
66+
CLI_CONFIG_FILE="$1"
67+
;;
68+
--extra-classpath)
69+
shift
70+
if [ $# -eq 0 ]; then echo "Error: --extra-classpath requires a value" >&2; exit 1; fi
71+
CLI_EXTRA_CLASSPATH="$1"
72+
;;
73+
esac
74+
shift
75+
done
76+
}
77+
78+
# Applies overrides in priority order: CLI args > IGNITE3_* env vars > defaults.
79+
# When node name is overridden, work/log dirs become subdirectories and config file
80+
# gets a node name suffix. Explicit path overrides take precedence over derived values.
81+
apply_overrides() {
82+
# Resolve node name: CLI > env var > default
83+
if [ -n "${CLI_NODE_NAME}" ]; then
84+
NODE_NAME="${CLI_NODE_NAME}"
85+
elif [ "${IGNITE3_NODE_NAME+set}" = "set" ]; then
86+
NODE_NAME="${IGNITE3_NODE_NAME}"
87+
fi
88+
89+
# If node name differs from default, derive subdirectory paths
90+
if [ "${NODE_NAME}" != "${BASE_NODE_NAME}" ]; then
91+
WORK_DIR="${BASE_WORK_DIR}/${NODE_NAME}"
92+
LOG_DIR="${BASE_LOG_DIR}/${NODE_NAME}"
93+
CONFIG_FILE="${BASE_CONFIG_FILE%.conf}-${NODE_NAME}.conf"
94+
fi
95+
96+
# Explicit path overrides take precedence over node-name derived values
97+
if [ -n "${CLI_WORK_DIR}" ]; then
98+
WORK_DIR="${CLI_WORK_DIR}"
99+
elif [ "${IGNITE3_WORK_DIR+set}" = "set" ]; then
100+
WORK_DIR="${IGNITE3_WORK_DIR}"
101+
fi
102+
103+
if [ -n "${CLI_LOG_DIR}" ]; then
104+
LOG_DIR="${CLI_LOG_DIR}"
105+
elif [ "${IGNITE3_LOG_DIR+set}" = "set" ]; then
106+
LOG_DIR="${IGNITE3_LOG_DIR}"
107+
fi
108+
109+
if [ -n "${CLI_CONFIG_FILE}" ]; then
110+
CONFIG_FILE="${CLI_CONFIG_FILE}"
111+
elif [ "${IGNITE3_CONFIG_FILE+set}" = "set" ]; then
112+
CONFIG_FILE="${IGNITE3_CONFIG_FILE}"
113+
fi
114+
115+
# Extra classpath: CLI > env var
116+
if [ -n "${CLI_EXTRA_CLASSPATH}" ]; then
117+
IGNITE3_EXTRA_CLASSPATH="${CLI_EXTRA_CLASSPATH}"
118+
fi
119+
}
120+
121+
parse_args "$@"
122+
apply_overrides
123+
124+
# Create work and log directories if they do not exist
125+
mkdir -p "${WORK_DIR}"
126+
mkdir -p "${LOG_DIR}"
127+
31128
. ${LIBS_DIR}/@BOOTSTRAP_FILE_NAME@
32129

33130
cd ${IGNITE_HOME} || exit

packaging/db/zip/linux/vars.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ JVM_GC_LOG_NAME="gc.log"
3232
JVM_GC_LOG_SIZE="100m"
3333
JVM_GC_NUM_LOGS="10"
3434
##For any additional users settings
35-
IGNITE3_EXTRA_JVM_ARGS=
35+
IGNITE3_EXTRA_JVM_ARGS=${IGNITE3_EXTRA_JVM_ARGS:-}

packaging/db/zip/windows/ignite3db.bat

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,99 @@ if "%IGNITE_HOME%"=="" set IGNITE_HOME=%APP_HOME%
7171
cd "%IGNITE_HOME%"
7272

7373
call "@CONF_DIR@\@VARS_FILE_NAME@"
74+
75+
@rem Save base values before any overrides
76+
set BASE_NODE_NAME=%NODE_NAME%
77+
set BASE_WORK_DIR=%WORK_DIR%
78+
set BASE_LOG_DIR=%LOG_DIR%
79+
set BASE_CONFIG_FILE=%CONFIG_FILE%
80+
81+
@rem Initialize CLI override variables
82+
set CLI_NODE_NAME=
83+
set CLI_WORK_DIR=
84+
set CLI_LOG_DIR=
85+
set CLI_CONFIG_FILE=
86+
set CLI_EXTRA_CLASSPATH=
87+
88+
@rem Parse command line arguments into CLI_* variables
89+
:parseArgs
90+
if "%~1"=="" goto applyOverrides
91+
if "%~1"=="--node-name" goto argNodeName
92+
if "%~1"=="--work-dir" goto argWorkDir
93+
if "%~1"=="--log-dir" goto argLogDir
94+
if "%~1"=="--config" goto argConfig
95+
if "%~1"=="--extra-classpath" goto argExtraClasspath
96+
shift
97+
goto parseArgs
98+
99+
:argNodeName
100+
if "%~2"=="" (echo Error: --node-name requires a value 1>&2 & goto fail)
101+
set CLI_NODE_NAME=%~2
102+
shift
103+
shift
104+
goto parseArgs
105+
106+
:argWorkDir
107+
if "%~2"=="" (echo Error: --work-dir requires a value 1>&2 & goto fail)
108+
set CLI_WORK_DIR=%~2
109+
shift
110+
shift
111+
goto parseArgs
112+
113+
:argLogDir
114+
if "%~2"=="" (echo Error: --log-dir requires a value 1>&2 & goto fail)
115+
set CLI_LOG_DIR=%~2
116+
shift
117+
shift
118+
goto parseArgs
119+
120+
:argConfig
121+
if "%~2"=="" (echo Error: --config requires a value 1>&2 & goto fail)
122+
set CLI_CONFIG_FILE=%~2
123+
shift
124+
shift
125+
goto parseArgs
126+
127+
:argExtraClasspath
128+
if "%~2"=="" (echo Error: --extra-classpath requires a value 1>&2 & goto fail)
129+
set CLI_EXTRA_CLASSPATH=%~2
130+
shift
131+
shift
132+
goto parseArgs
133+
134+
@rem Apply overrides in priority order: CLI args > IGNITE3_* env vars > defaults.
135+
@rem When node name is overridden, work/log dirs become subdirectories and config file
136+
@rem gets a node name suffix. Explicit path overrides take precedence over derived values.
137+
:applyOverrides
138+
139+
@rem Resolve node name: CLI > env var > default
140+
if defined CLI_NODE_NAME set NODE_NAME=%CLI_NODE_NAME%
141+
if not defined CLI_NODE_NAME if defined IGNITE3_NODE_NAME set NODE_NAME=%IGNITE3_NODE_NAME%
142+
143+
@rem If node name differs from default, derive subdirectory paths
144+
if not "%NODE_NAME%"=="%BASE_NODE_NAME%" (
145+
set "WORK_DIR=%BASE_WORK_DIR%\%NODE_NAME%"
146+
set "LOG_DIR=%BASE_LOG_DIR%\%NODE_NAME%"
147+
call set "CONFIG_FILE=%%BASE_CONFIG_FILE:.conf=-%NODE_NAME%.conf%%"
148+
)
149+
150+
@rem Explicit path overrides take precedence over node-name derived values
151+
if defined CLI_WORK_DIR set WORK_DIR=%CLI_WORK_DIR%
152+
if not defined CLI_WORK_DIR if defined IGNITE3_WORK_DIR set WORK_DIR=%IGNITE3_WORK_DIR%
153+
154+
if defined CLI_LOG_DIR set LOG_DIR=%CLI_LOG_DIR%
155+
if not defined CLI_LOG_DIR if defined IGNITE3_LOG_DIR set LOG_DIR=%IGNITE3_LOG_DIR%
156+
157+
if defined CLI_CONFIG_FILE set CONFIG_FILE=%CLI_CONFIG_FILE%
158+
if not defined CLI_CONFIG_FILE if defined IGNITE3_CONFIG_FILE set CONFIG_FILE=%IGNITE3_CONFIG_FILE%
159+
160+
@rem Extra classpath: CLI > env var
161+
if defined CLI_EXTRA_CLASSPATH set IGNITE3_EXTRA_CLASSPATH=%CLI_EXTRA_CLASSPATH%
162+
163+
@rem Create work and log directories if they do not exist
164+
if not exist "%WORK_DIR%" mkdir "%WORK_DIR%"
165+
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
166+
74167
call "%LIBS_DIR%\@BOOTSTRAP_FILE_NAME@"
75168

76169
@rem Execute ignite3

packaging/db/zip/windows/vars.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ set JVM_GC_LOG_SIZE=100m
3333
set JVM_GC_NUM_LOGS=10
3434

3535
@rem For any additional users settings
36-
set IGNITE3_EXTRA_JVM_ARGS=
36+
if not defined IGNITE3_EXTRA_JVM_ARGS set IGNITE3_EXTRA_JVM_ARGS=

0 commit comments

Comments
 (0)