This is an automated email from the ASF dual-hosted git repository. JackieTien97 pushed a commit to branch ty/adapt-tsfile-zh in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 0e9ab5499fd362be1fec669ba5a2c2c57c5cb874 Author: JackieTien97 <[email protected]> AuthorDate: Tue May 19 10:46:47 2026 +0800 feat: pass -Dtsfile.locale=zh to JVM under with-zh-locale build TsFile (apache/tsfile#820) selects its message locale at runtime via the -Dtsfile.locale system property. Wire IoTDB's with-zh-locale build to emit a filtered conf/iotdb-locale.{sh,bat} that the env scripts source on startup, appending -Dtsfile.locale=zh to IOTDB_JMX_OPTS / CONFIGNODE_JMX_OPTS so packaged Chinese builds also get Chinese log/exception messages from tsfile. --- distribution/src/assembly/all.xml | 12 +++++++++++ distribution/src/assembly/confignode.xml | 10 +++++++++ distribution/src/assembly/datanode.xml | 10 +++++++++ integration-test/src/assembly/mpp-test.xml | 14 +++++++++++++ iotdb-core/confignode/src/assembly/confignode.xml | 10 +++++++++ iotdb-core/datanode/src/assembly/server.xml | 10 +++++++++ pom.xml | 2 ++ scripts/conf/confignode-env.sh | 10 +++++++++ scripts/conf/datanode-env.sh | 9 ++++++++ scripts/conf/iotdb-locale.sh | 25 +++++++++++++++++++++++ scripts/conf/windows/confignode-env.bat | 9 ++++++++ scripts/conf/windows/datanode-env.bat | 9 ++++++++ scripts/conf/windows/iotdb-locale.bat | 24 ++++++++++++++++++++++ 13 files changed, 154 insertions(+) diff --git a/distribution/src/assembly/all.xml b/distribution/src/assembly/all.xml index 1b2e1be054f..f6de84f22ad 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-locale.*</exclude> + <exclude>**/iotdb-locale.*</exclude> </excludes> <fileMode>0755</fileMode> </fileSet> + <fileSet> + <outputDirectory>conf</outputDirectory> + <directory>${project.basedir}/../scripts/conf</directory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.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..0083dc8e3d6 100644 --- a/distribution/src/assembly/confignode.xml +++ b/distribution/src/assembly/confignode.xml @@ -55,6 +55,16 @@ </includes> <fileMode>0755</fileMode> </fileSet> + <fileSet> + <directory>${project.basedir}/../scripts/conf</directory> + <outputDirectory>conf</outputDirectory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.bat</include> + </includes> + <filtered>true</filtered> + <fileMode>0755</fileMode> + </fileSet> <fileSet> <directory>${project.basedir}/../scripts/sbin</directory> <outputDirectory>sbin</outputDirectory> diff --git a/distribution/src/assembly/datanode.xml b/distribution/src/assembly/datanode.xml index 225fa5a7e7d..8ab582f304c 100644 --- a/distribution/src/assembly/datanode.xml +++ b/distribution/src/assembly/datanode.xml @@ -51,6 +51,16 @@ </includes> <fileMode>0755</fileMode> </fileSet> + <fileSet> + <directory>${project.basedir}/../scripts/conf</directory> + <outputDirectory>conf</outputDirectory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.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..5b54a9e203b 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-locale.*</exclude> + <exclude>**/iotdb-locale.*</exclude> + </excludes> + <fileMode>0755</fileMode> + </fileSet> + <fileSet> + <outputDirectory>conf</outputDirectory> + <directory>${project.basedir}/../scripts/conf</directory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.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..a88f54db469 100644 --- a/iotdb-core/confignode/src/assembly/confignode.xml +++ b/iotdb-core/confignode/src/assembly/confignode.xml @@ -45,6 +45,16 @@ </includes> <fileMode>0755</fileMode> </fileSet> + <fileSet> + <directory>${project.basedir}/../../scripts/conf</directory> + <outputDirectory>conf</outputDirectory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.bat</include> + </includes> + <filtered>true</filtered> + <fileMode>0755</fileMode> + </fileSet> <fileSet> <directory>${project.basedir}/../../scripts/sbin</directory> <outputDirectory>sbin</outputDirectory> diff --git a/iotdb-core/datanode/src/assembly/server.xml b/iotdb-core/datanode/src/assembly/server.xml index 0822b9ae568..ff2e704e33c 100644 --- a/iotdb-core/datanode/src/assembly/server.xml +++ b/iotdb-core/datanode/src/assembly/server.xml @@ -45,6 +45,16 @@ </includes> <fileMode>0755</fileMode> </fileSet> + <fileSet> + <directory>${project.basedir}/../../scripts/conf</directory> + <outputDirectory>conf</outputDirectory> + <includes> + <include>iotdb-locale.sh</include> + <include>windows/iotdb-locale.bat</include> + </includes> + <filtered>true</filtered> + <fileMode>0755</fileMode> + </fileSet> <fileSet> <directory>${project.basedir}/../../scripts/sbin</directory> <outputDirectory>sbin</outputDirectory> diff --git a/pom.xml b/pom.xml index 6fad8ff9407..e7e7efd7739 100644 --- a/pom.xml +++ b/pom.xml @@ -166,6 +166,7 @@ <zstd-jni.version>1.5.6-3</zstd-jni.version> <tsfile.version>2.3.0-260422-SNAPSHOT</tsfile.version> <i18n.locale>en</i18n.locale> + <tsfile.locale.opt></tsfile.locale.opt> </properties> <!-- if we claim dependencies in dependencyManagement, then we do not claim @@ -2026,6 +2027,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..7f4eb40b980 100644 --- a/scripts/conf/confignode-env.sh +++ b/scripts/conf/confignode-env.sh @@ -321,6 +321,16 @@ 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" + +# Apply tsfile locale option populated by Maven at package time +# (see conf/iotdb-locale.sh; empty in default build, "-Dtsfile.locale=zh" under with-zh-locale). +if [ -f "${CONFIGNODE_CONF}/iotdb-locale.sh" ]; then + . "${CONFIGNODE_CONF}/iotdb-locale.sh" + if [ -n "$TSFILE_LOCALE_JVM_OPT" ]; then + CONFIGNODE_JMX_OPTS="$CONFIGNODE_JMX_OPTS $TSFILE_LOCALE_JVM_OPT" + fi +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..00c894e1fbb 100755 --- a/scripts/conf/datanode-env.sh +++ b/scripts/conf/datanode-env.sh @@ -339,6 +339,15 @@ 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" +# Apply tsfile locale option populated by Maven at package time +# (see conf/iotdb-locale.sh; empty in default build, "-Dtsfile.locale=zh" under with-zh-locale). +if [ -f "${IOTDB_CONF}/iotdb-locale.sh" ]; then + . "${IOTDB_CONF}/iotdb-locale.sh" + if [ -n "$TSFILE_LOCALE_JVM_OPT" ]; then + IOTDB_JMX_OPTS="$IOTDB_JMX_OPTS $TSFILE_LOCALE_JVM_OPT" + fi +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-locale.sh b/scripts/conf/iotdb-locale.sh new file mode 100644 index 00000000000..f49b803057b --- /dev/null +++ b/scripts/conf/iotdb-locale.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# +# 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. +# + +# JVM option for selecting tsfile's runtime locale (log/exception messages). +# This file is filtered by Maven at package time: +# - Default build: TSFILE_LOCALE_JVM_OPT is empty (English). +# - `with-zh-locale` profile: TSFILE_LOCALE_JVM_OPT="-Dtsfile.locale=zh". +TSFILE_LOCALE_JVM_OPT="@tsfile.locale.opt@" diff --git a/scripts/conf/windows/confignode-env.bat b/scripts/conf/windows/confignode-env.bat index 51b0f8de9cc..f47a52264a9 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-locale.bat; empty in default build, -Dtsfile.locale=zh under with-zh-locale). +IF EXIST "%CONFIGNODE_CONF%\windows\iotdb-locale.bat" ( + CALL "%CONFIGNODE_CONF%\windows\iotdb-locale.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..9b7353af319 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-locale.bat; empty in default build, -Dtsfile.locale=zh under with-zh-locale). +IF EXIST "%IOTDB_CONF%\windows\iotdb-locale.bat" ( + CALL "%IOTDB_CONF%\windows\iotdb-locale.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-locale.bat b/scripts/conf/windows/iotdb-locale.bat new file mode 100644 index 00000000000..f8977d76762 --- /dev/null +++ b/scripts/conf/windows/iotdb-locale.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]@
