This is an automated email from the ASF dual-hosted git repository.
justinchen 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 3288914e326 Fixed the cached TTL & time precision problem of
PartitionTableAutoCleaner (#15455)
3288914e326 is described below
commit 3288914e32690ea37add10be764db18d8150986f
Author: Caideyipi <[email protected]>
AuthorDate: Tue May 6 12:08:53 2025 +0800
Fixed the cached TTL & time precision problem of PartitionTableAutoCleaner
(#15455)
* Update ClusterSchemaInfo.java
* partial
* Fix
---
.../org/apache/iotdb/confignode/manager/TTLManager.java | 9 +++++++--
.../plan/analyze/cache/schema/DataNodeTTLCache.java | 2 +-
.../org/apache/iotdb/commons/schema/table/TsTable.java | 15 ++++++---------
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TTLManager.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TTLManager.java
index 110d68a02c6..e7ec400d0a9 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TTLManager.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/TTLManager.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.conf.CommonDescriptor;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.commons.utils.CommonDateTimeUtils;
import org.apache.iotdb.commons.utils.PathUtils;
import org.apache.iotdb.confignode.consensus.request.read.ttl.ShowTTLPlan;
import
org.apache.iotdb.confignode.consensus.request.write.database.DatabaseSchemaPlan;
@@ -136,8 +137,12 @@ public class TTLManager {
* @return the maximum ttl of the subtree of the corresponding database.
return NULL_TTL if the
* TTL is not set or the database does not exist.
*/
- public long getDatabaseMaxTTL(String database) {
- return ttlInfo.getDatabaseMaxTTL(database);
+ public long getDatabaseMaxTTL(final String database) {
+ final long ttl = ttlInfo.getDatabaseMaxTTL(database);
+ return ttl == Long.MAX_VALUE || ttl < 0
+ ? ttl
+ : CommonDateTimeUtils.convertMilliTimeWithPrecision(
+ ttl,
CommonDescriptor.getInstance().getConfig().getTimestampPrecision());
}
/** Only used for upgrading from old database-level ttl to device-level ttl.
*/
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
index a43c0a663ea..5e0f3f01a2b 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/schema/DataNodeTTLCache.java
@@ -87,7 +87,7 @@ public class DataNodeTTLCache {
public long getTTLForTable(final String database, final String table) {
final TsTable tsTable =
DataNodeTableCache.getInstance().getTable(database, table);
- return tsTable == null ? Long.MAX_VALUE : tsTable.getTableTTL();
+ return tsTable == null ? Long.MAX_VALUE : tsTable.getCachedTableTTL();
}
/** Get ttl with time precision conversion. */
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java
index 92fbd805bb2..15f0b26415a 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/schema/table/TsTable.java
@@ -209,23 +209,20 @@ public class TsTable {
// This shall only be called on DataNode, where the tsTable is replaced
completely thus an old
// cache won't pollute the newest value
- public long getTableTTL() {
+ public long getCachedTableTTL() {
// Cache for performance
if (ttlValue < 0) {
- final long ttl = getTableTTLInMS();
- ttlValue =
- ttl == Long.MAX_VALUE
- ? ttl
- : CommonDateTimeUtils.convertMilliTimeWithPrecision(
- ttl,
CommonDescriptor.getInstance().getConfig().getTimestampPrecision());
+ ttlValue = getTableTTL();
}
return ttlValue;
}
- private long getTableTTLInMS() {
+ public long getTableTTL() {
final Optional<String> ttl = getPropValue(TTL_PROPERTY);
return ttl.isPresent() && !ttl.get().equalsIgnoreCase(TTL_INFINITE)
- ? Long.parseLong(ttl.get())
+ ? CommonDateTimeUtils.convertMilliTimeWithPrecision(
+ Long.parseLong(ttl.get()),
+ CommonDescriptor.getInstance().getConfig().getTimestampPrecision())
: Long.MAX_VALUE;
}