This is an automated email from the ASF dual-hosted git repository.
CRZbulabula pushed a commit to branch rc/2.0.11
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rc/2.0.11 by this push:
new e789f1a211a Fix WAL throttle threshold fallback on hot reload (#18336)
(#18514)
e789f1a211a is described below
commit e789f1a211acf5119c8d5b3653d6612edd2eb8f7
Author: Yongzao <[email protected]>
AuthorDate: Mon Aug 24 22:01:39 2026 +0800
Fix WAL throttle threshold fallback on hot reload (#18336) (#18514)
---
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 7 ++++++
.../org/apache/iotdb/db/conf/PropertiesTest.java | 28 ++++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index e3862bc0e9b..2c5af4c088f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1798,6 +1798,11 @@ public class IoTDBDescriptor {
}
long throttleDownThresholdInByte =
Long.parseLong(getWalThrottleThreshold(properties));
+ if (throttleDownThresholdInByte < 0) {
+ throttleDownThresholdInByte =
+ Long.parseLong(
+
ConfigurationFileUtils.getConfigurationDefaultValue(DEFAULT_WAL_THRESHOLD_NAME[1]));
+ }
if (throttleDownThresholdInByte > 0) {
conf.setThrottleThreshold(throttleDownThresholdInByte);
}
@@ -2401,6 +2406,8 @@ public class IoTDBDescriptor {
Long.toString(commonDescriptor.getConfig().getSortBufferSize()));
ConfigurationFileUtils.updateAppliedProperties(
"mods_cache_size_limit_per_fi_in_bytes",
Long.toString(conf.getModsCacheSizeLimitPerFI()));
+ ConfigurationFileUtils.updateAppliedProperties(
+ DEFAULT_WAL_THRESHOLD_NAME[1],
Long.toString(conf.getThrottleThreshold()));
}
private void loadQuerySampleThroughput(TrimProperties properties) throws
IOException {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/conf/PropertiesTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/conf/PropertiesTest.java
index f4daffbf303..d829bd595aa 100755
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/conf/PropertiesTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/conf/PropertiesTest.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.conf;
+import org.apache.iotdb.commons.conf.ConfigurationFileUtils;
import org.apache.iotdb.commons.conf.TrimProperties;
import org.apache.iotdb.commons.utils.RegionMigrationFileRemoveRateLimiter;
@@ -36,6 +37,33 @@ import java.util.Properties;
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
public class PropertiesTest {
+ @Test
+ public void testHotReloadNegativeWalThrottleThresholdUsesDefault() throws
Exception {
+ final String key = "wal_throttle_threshold_in_byte";
+ final long configuredThreshold = 1024 * 1024 * 1024L;
+ final long defaultThreshold =
+
Long.parseLong(ConfigurationFileUtils.getConfigurationDefaultValue(key));
+ final IoTDBDescriptor descriptor = IoTDBDescriptor.getInstance();
+ final long originalThreshold =
descriptor.getConfig().getThrottleThreshold();
+
+ try {
+ final TrimProperties properties = new TrimProperties();
+ properties.setProperty(key, Long.toString(configuredThreshold));
+ descriptor.loadHotModifiedProps(properties);
+ Assert.assertEquals(configuredThreshold,
descriptor.getConfig().getThrottleThreshold());
+
+ properties.setProperty(key, "-1");
+ descriptor.loadHotModifiedProps(properties);
+ Assert.assertEquals(defaultThreshold,
descriptor.getConfig().getThrottleThreshold());
+ Assert.assertEquals(
+ Long.toString(defaultThreshold),
ConfigurationFileUtils.getAppliedProperties().get(key));
+ } finally {
+ final TrimProperties properties = new TrimProperties();
+ properties.setProperty(key, Long.toString(originalThreshold));
+ descriptor.loadHotModifiedProps(properties);
+ }
+ }
+
@Test
public void testHotReloadRegionMigrationFileRemoveSpeedLimit() throws
Exception {
IoTDBDescriptor descriptor = IoTDBDescriptor.getInstance();