You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yo...@apache.org on 2026/07/28 15:23:55 UTC
(iotdb) branch master updated: Fix WAL throttle threshold fallback on hot reload (#18336)
This is an automated email from the ASF dual-hosted git repository.
CRZbulabula 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 23201f223ca Fix WAL throttle threshold fallback on hot reload (#18336)
23201f223ca is described below
commit 23201f223caf29f648c484edc0f10d7714fb3a26
Author: Yongzao <yo...@apache.org>
AuthorDate: Tue Jul 28 23:23:48 2026 +0800
Fix WAL throttle threshold fallback on hot reload (#18336)
---
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 7 ++++++
.../org/apache/iotdb/db/conf/PropertiesTest.java | 27 ++++++++++++++++++++++
2 files changed, 34 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 09584dfe619..15d2b7d003d 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
@@ -1805,6 +1805,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);
}
@@ -2419,6 +2424,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 aad4851f6bc..191719ab8d4 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
@@ -41,6 +41,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 testHotReloadTsFileParserInFlightLimits() throws Exception {
final IoTDBDescriptor descriptor = IoTDBDescriptor.getInstance();