This is an automated email from the ASF dual-hosted git repository.
JackieTien97 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 2c845e12a73 feat: pass -Dtsfile.locale=zh to JVM under with-zh-locale
build (#17716)
2c845e12a73 is described below
commit 2c845e12a7357ced845f3473df8f17b050adfad0
Author: Jackie Tien <[email protected]>
AuthorDate: Wed May 20 13:47:09 2026 +0800
feat: pass -Dtsfile.locale=zh to JVM under with-zh-locale build (#17716)
---
distribution/src/assembly/all.xml | 12 ++++++++++++
distribution/src/assembly/confignode.xml | 11 ++++++++++-
integration-test/src/assembly/mpp-test.xml | 14 +++++++++++++
iotdb-core/confignode/src/assembly/confignode.xml | 10 ++++++++++
iotdb-core/datanode/src/assembly/server.xml | 12 +++++++++++-
pom.xml | 4 +++-
scripts/conf/confignode-env.sh | 7 +++++++
scripts/conf/datanode-env.sh | 6 ++++++
scripts/conf/iotdb-common.sh | 6 ++++++
scripts/conf/windows/confignode-env.bat | 9 +++++++++
scripts/conf/windows/datanode-env.bat | 9 +++++++++
scripts/conf/windows/iotdb-common.bat | 24 +++++++++++++++++++++++
12 files changed, 121 insertions(+), 3 deletions(-)
diff --git a/distribution/src/assembly/all.xml
b/distribution/src/assembly/all.xml
index 1b2e1be054f..c8b583de664 100644
--- a/distribution/src/assembly/all.xml
+++ b/distribution/src/assembly/all.xml
@@ -64,9 +64,21 @@
<excludes>
<exclude>ainode-env.*</exclude>
<exclude>**/ainode-env.*</exclude>
+ <exclude>iotdb-common.sh</exclude>
+ <exclude>**/iotdb-common.bat</exclude>
</excludes>
<fileMode>0755</fileMode>
</fileSet>
+ <fileSet>
+ <outputDirectory>conf</outputDirectory>
+ <directory>${project.basedir}/../scripts/conf</directory>
+ <includes>
+ <include>iotdb-common.sh</include>
+ <include>windows/iotdb-common.bat</include>
+ </includes>
+ <filtered>true</filtered>
+ <fileMode>0755</fileMode>
+ </fileSet>
<fileSet>
<outputDirectory>sbin</outputDirectory>
<directory>${project.basedir}/../scripts/sbin</directory>
diff --git a/distribution/src/assembly/confignode.xml
b/distribution/src/assembly/confignode.xml
index 23665f09a2e..6c3d04558eb 100644
--- a/distribution/src/assembly/confignode.xml
+++ b/distribution/src/assembly/confignode.xml
@@ -49,12 +49,21 @@
<directory>${project.basedir}/../scripts/conf</directory>
<outputDirectory>conf</outputDirectory>
<includes>
- <include>iotdb-common.*</include>
<include>confignode-env.*</include>
<include>**/confignode-env.*</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../scripts/conf</directory>
+ <outputDirectory>conf</outputDirectory>
+ <includes>
+ <include>iotdb-common.sh</include>
+ <include>windows/iotdb-common.bat</include>
+ </includes>
+ <filtered>true</filtered>
+ <fileMode>0755</fileMode>
+ </fileSet>
<fileSet>
<directory>${project.basedir}/../scripts/sbin</directory>
<outputDirectory>sbin</outputDirectory>
diff --git a/integration-test/src/assembly/mpp-test.xml
b/integration-test/src/assembly/mpp-test.xml
index 3915c4593a9..58bb8da0e15 100644
--- a/integration-test/src/assembly/mpp-test.xml
+++ b/integration-test/src/assembly/mpp-test.xml
@@ -49,6 +49,20 @@
<fileSet>
<outputDirectory>conf</outputDirectory>
<directory>${project.basedir}/../scripts/conf</directory>
+ <excludes>
+ <exclude>iotdb-common.sh</exclude>
+ <exclude>**/iotdb-common.bat</exclude>
+ </excludes>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ <fileSet>
+ <outputDirectory>conf</outputDirectory>
+ <directory>${project.basedir}/../scripts/conf</directory>
+ <includes>
+ <include>iotdb-common.sh</include>
+ <include>windows/iotdb-common.bat</include>
+ </includes>
+ <filtered>true</filtered>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
diff --git a/iotdb-core/confignode/src/assembly/confignode.xml
b/iotdb-core/confignode/src/assembly/confignode.xml
index 0c2e66d8f95..659b42fd14d 100644
--- a/iotdb-core/confignode/src/assembly/confignode.xml
+++ b/iotdb-core/confignode/src/assembly/confignode.xml
@@ -45,6 +45,15 @@
</includes>
<fileMode>0755</fileMode>
</fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../../scripts/conf</directory>
+ <outputDirectory>conf</outputDirectory>
+ <includes>
+ <include>windows/iotdb-common.bat</include>
+ </includes>
+ <filtered>true</filtered>
+ <fileMode>0755</fileMode>
+ </fileSet>
<fileSet>
<directory>${project.basedir}/../../scripts/sbin</directory>
<outputDirectory>sbin</outputDirectory>
@@ -72,6 +81,7 @@
<file>
<source>${project.basedir}/../../scripts/conf/iotdb-common.sh</source>
<destName>conf/iotdb-common.sh</destName>
+ <filtered>true</filtered>
</file>
</files>
</assembly>
diff --git a/iotdb-core/datanode/src/assembly/server.xml
b/iotdb-core/datanode/src/assembly/server.xml
index 0822b9ae568..2e1dab2e584 100644
--- a/iotdb-core/datanode/src/assembly/server.xml
+++ b/iotdb-core/datanode/src/assembly/server.xml
@@ -45,6 +45,15 @@
</includes>
<fileMode>0755</fileMode>
</fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../../scripts/conf</directory>
+ <outputDirectory>conf</outputDirectory>
+ <includes>
+ <include>windows/iotdb-common.bat</include>
+ </includes>
+ <filtered>true</filtered>
+ <fileMode>0755</fileMode>
+ </fileSet>
<fileSet>
<directory>${project.basedir}/../../scripts/sbin</directory>
<outputDirectory>sbin</outputDirectory>
@@ -70,10 +79,11 @@
<source>${project.basedir}/../node-commons/src/assembly/resources/conf/iotdb-system.properties</source>
<destName>conf/iotdb-system.properties</destName>
</file>
- <!-- copy iotdb-common.sh to different script folders-->
+ <!-- copy iotdb-common.sh to different script folders (filtered for
tsfile.locale.opt) -->
<file>
<source>${project.basedir}/../../scripts/conf/iotdb-common.sh</source>
<destName>conf/iotdb-common.sh</destName>
+ <filtered>true</filtered>
</file>
</files>
</assembly>
diff --git a/pom.xml b/pom.xml
index c960a8d4476..b2591ac6730 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,8 +164,9 @@
<thrift.version>0.14.1</thrift.version>
<xz.version>1.9</xz.version>
<zstd-jni.version>1.5.6-3</zstd-jni.version>
- <tsfile.version>2.3.0-260422-SNAPSHOT</tsfile.version>
+ <tsfile.version>2.3.1-260519-SNAPSHOT</tsfile.version>
<i18n.locale>en</i18n.locale>
+ <tsfile.locale.opt/>
</properties>
<!--
if we claim dependencies in dependencyManagement, then we do not claim
@@ -1984,6 +1985,7 @@
<id>with-zh-locale</id>
<properties>
<i18n.locale>zh</i18n.locale>
+ <tsfile.locale.opt>-Dtsfile.locale=zh</tsfile.locale.opt>
</properties>
</profile>
</profiles>
diff --git a/scripts/conf/confignode-env.sh b/scripts/conf/confignode-env.sh
index 3b2117209fc..6cf29cb32da 100644
--- a/scripts/conf/confignode-env.sh
+++ b/scripts/conf/confignode-env.sh
@@ -321,6 +321,13 @@ if [[ ! "$CONFIGNODE_JMX_OPTS" =~ -XX:MaxDirectMemorySize
]]; then CONFIGNODE_JM
CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS
-Djdk.nio.maxCachedBufferSize=${MAX_CACHED_BUFFER_SIZE}"
CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS -XX:+CrashOnOutOfMemoryError"
CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS -Dsun.jnu.encoding=UTF-8
-Dfile.encoding=UTF-8"
+
+# Append tsfile locale option populated by Maven at package time
+# (see conf/iotdb-common.sh; empty in default build, "-Dtsfile.locale=zh"
under with-zh-locale).
+if [ -n "$TSFILE_LOCALE_JVM_OPT" ]; then
+ CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS $TSFILE_LOCALE_JVM_OPT"
+fi
+
# if you want to dump the heap memory while OOM happening, you can use the
following command, remember to replace
${heap_dump_dir}/confignode_heapdump.hprof with your own file path and the
folder where this file is located needs to be created in advance
#CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=${heap_dump_dir}/confignode_heapdump.hprof"
diff --git a/scripts/conf/datanode-env.sh b/scripts/conf/datanode-env.sh
index f0f7da3e79b..f600066a848 100755
--- a/scripts/conf/datanode-env.sh
+++ b/scripts/conf/datanode-env.sh
@@ -339,6 +339,12 @@ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS
-XX:SafepointTimeoutDelay=1000"
IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -XX:+SafepointTimeout"
IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"
+# Append tsfile locale option populated by Maven at package time
+# (see conf/iotdb-common.sh; empty in default build, "-Dtsfile.locale=zh"
under with-zh-locale).
+if [ -n "$TSFILE_LOCALE_JVM_OPT" ]; then
+ IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS $TSFILE_LOCALE_JVM_OPT"
+fi
+
# option below tries to optimize safepoint stw time for large counted loop.
# NOTE: it may have an impact on JIT's black-box optimization.
# IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS -XX:+UseCountedLoopSafepoints"
diff --git a/scripts/conf/iotdb-common.sh b/scripts/conf/iotdb-common.sh
index 0236fef3f41..057622f53f0 100755
--- a/scripts/conf/iotdb-common.sh
+++ b/scripts/conf/iotdb-common.sh
@@ -18,6 +18,12 @@
# under the License.
#
+# JVM option for selecting tsfile's runtime locale (log/exception messages).
+# Filtered by Maven at package time:
+# - Default build: empty (English).
+# - `with-zh-locale` profile: "-Dtsfile.locale=zh".
+TSFILE_LOCALE_JVM_OPT="@tsfile.locale.opt@"
+
# this function is for parsing the variables like "A=B" in `start-server.sh
-D A=B`
# The command just parse IOTDB-prefixed variables and ignore all other
variables
diff --git a/scripts/conf/windows/confignode-env.bat
b/scripts/conf/windows/confignode-env.bat
index 51b0f8de9cc..baeed004667 100644
--- a/scripts/conf/windows/confignode-env.bat
+++ b/scripts/conf/windows/confignode-env.bat
@@ -152,5 +152,14 @@ IF "%JAVA_VERSION%" == "8" (
--add-opens=java.base/java.net=ALL-UNNAMED
)
+@REM Apply tsfile locale option populated by Maven at package time
+@REM (see conf\windows\iotdb-common.bat; empty in default build,
-Dtsfile.locale=zh under with-zh-locale).
+IF EXIST "%CONFIGNODE_CONF%\windows\iotdb-common.bat" (
+ CALL "%CONFIGNODE_CONF%\windows\iotdb-common.bat"
+ IF NOT "%TSFILE_LOCALE_JVM_OPT%"=="" (
+ set CONFIGNODE_JMX_OPTS=%CONFIGNODE_JMX_OPTS% %TSFILE_LOCALE_JVM_OPT%
+ )
+)
+
echo ConfigNode on heap memory size = %ON_HEAP_MEMORY%B, off heap memory size
= %OFF_HEAP_MEMORY%B
echo If you want to change this configuration, please check
conf/windows/confignode-env.bat.
diff --git a/scripts/conf/windows/datanode-env.bat
b/scripts/conf/windows/datanode-env.bat
index 25fe1a13647..ccaabf24bec 100644
--- a/scripts/conf/windows/datanode-env.bat
+++ b/scripts/conf/windows/datanode-env.bat
@@ -183,5 +183,14 @@ IF "%JAVA_VERSION%" == "8" (
--add-opens=java.base/java.net=ALL-UNNAMED
)
+@REM Apply tsfile locale option populated by Maven at package time
+@REM (see conf\windows\iotdb-common.bat; empty in default build,
-Dtsfile.locale=zh under with-zh-locale).
+IF EXIST "%IOTDB_CONF%\windows\iotdb-common.bat" (
+ CALL "%IOTDB_CONF%\windows\iotdb-common.bat"
+ IF NOT "%TSFILE_LOCALE_JVM_OPT%"=="" (
+ set IOTDB_JMX_OPTS=%IOTDB_JMX_OPTS% %TSFILE_LOCALE_JVM_OPT%
+ )
+)
+
echo DataNode on heap memory size = %ON_HEAP_MEMORY%B, off heap memory size =
%OFF_HEAP_MEMORY%B
echo If you want to change this configuration, please check
conf/windows/datanode-env.bat.
diff --git a/scripts/conf/windows/iotdb-common.bat
b/scripts/conf/windows/iotdb-common.bat
new file mode 100644
index 00000000000..f8977d76762
--- /dev/null
+++ b/scripts/conf/windows/iotdb-common.bat
@@ -0,0 +1,24 @@
+@REM
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM
+
+@REM JVM option for selecting tsfile's runtime locale (log/exception messages).
+@REM This file is filtered by Maven at package time:
+@REM - Default build: TSFILE_LOCALE_JVM_OPT is empty (English).
+@REM - `with-zh-locale` profile: TSFILE_LOCALE_JVM_OPT=-Dtsfile.locale=zh.
+set [email protected]@