From d0de9ecac811fc4890e11c2a020d3ef8184e65e0 Mon Sep 17 00:00:00 2001 From: 761417898 <761417898@qq.com> Date: Wed, 30 Sep 2026 16:09:54 +0800 Subject: [PATCH] Fix TTL expired data ratio in settle compaction --- .../compaction/selector/impl/SettleSelectorImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java index b08c032d483ce..61f8229cd3ca3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/selector/impl/SettleSelectorImpl.java @@ -290,7 +290,7 @@ private FileDirtyInfo selectFileBaseOnDirtyData(TsFileResource resource) // overflow, like 100 - Long.MIN outdatedTimeDiff = Long.MAX_VALUE; } - long ttlThreshold = 3 * ttl > ttl ? ttl : Long.MAX_VALUE; + long ttlThreshold = ttl <= Long.MAX_VALUE / 3 ? 3 * ttl : Long.MAX_VALUE; hasExpiredTooLong = hasExpiredTooLong || outdatedTimeDiff > Math.min(config.getMaxExpiredTime(), ttlThreshold); @@ -309,7 +309,8 @@ private FileDirtyInfo selectFileBaseOnDirtyData(TsFileResource resource) return new FileDirtyInfo(DirtyStatus.FULLY_DIRTY, ttlTables); } hasExpiredTooLong = config.getMaxExpiredTime() != Long.MAX_VALUE && hasExpiredTooLong; - if (hasExpiredTooLong || deletedDeviceRatio >= config.getExpiredDataRatio()) { + if (hasExpiredTooLong + || (deletedDeviceRatio > 0 && deletedDeviceRatio >= config.getExpiredDataRatio())) { // evaluate dirty data size in the tsfile return new FileDirtyInfo( PARTIALLY_DIRTY, (long) (deletedDeviceRatio * resource.getTsFileSize()), ttlTables);