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]@

Reply via email to