This is an automated email from the ASF dual-hosted git repository.

shuwenwei pushed a commit to branch object_type
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/object_type by this push:
     new 2ba2148d6db ignore ttl for object type
2ba2148d6db is described below

commit 2ba2148d6db6497a061ebf77157316229a452694
Author: shuwenwei <[email protected]>
AuthorDate: Thu Jul 10 12:08:55 2025 +0800

    ignore ttl for object type
---
 .../planner/plan/node/write/InsertTabletNode.java   | 16 ++++++++++++++++
 .../db/storageengine/dataregion/DataRegion.java     | 11 ++++-------
 .../org/apache/iotdb/db/utils/ObjectTypeUtils.java  | 21 +++++++++++++++++----
 3 files changed, 37 insertions(+), 11 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
index be67555ac2e..3d24ffcbc11 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/write/InsertTabletNode.java
@@ -95,10 +95,26 @@ public class InsertTabletNode extends InsertNode implements 
WALEntryValue {
   // proper positions.
   protected List<Integer> range;
 
+  private Boolean shouldCheckTTL;
+
   public InsertTabletNode(PlanNodeId id) {
     super(id);
   }
 
+  public boolean shouldCheckTTL() {
+    if (shouldCheckTTL != null) {
+      return shouldCheckTTL;
+    }
+    shouldCheckTTL = true;
+    for (MeasurementSchema measurementSchema : measurementSchemas) {
+      if (measurementSchema.getType() == TSDataType.OBJECT) {
+        shouldCheckTTL = false;
+        break;
+      }
+    }
+    return shouldCheckTTL;
+  }
+
   @Override
   public InsertNode mergeInsertNode(List<InsertNode> insertNodes) {
     List<Integer> index = new ArrayList<>();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index fc5d9c13e4b..166901363f6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -1304,7 +1304,10 @@ public class DataRegion implements IDataRegionForQuery {
       InsertTabletNode insertTabletNode, TSStatus[] results, long[] 
infoForMetrics)
       throws OutOfTTLException {
     boolean noFailure;
-    int loc = insertTabletNode.checkTTL(results, getTTL(insertTabletNode));
+    int loc =
+        insertTabletNode.shouldCheckTTL()
+            ? insertTabletNode.checkTTL(results, getTTL(insertTabletNode))
+            : 0;
     noFailure = loc == 0;
     List<Pair<IDeviceID, Integer>> deviceEndOffsetPairs =
         insertTabletNode.splitByDevice(loc, insertTabletNode.getRowCount());
@@ -3048,12 +3051,6 @@ public class DataRegion implements IDataRegionForQuery {
   }
 
   public void writeObject(ObjectNode objectNode) throws Exception {
-    long ttl =
-        DataNodeTTLCache.getInstance().getTTLForTable(this.databaseName, 
objectNode.getTable());
-    long nodeTimestamp = objectNode.getTimestamp();
-    if (!CommonUtils.isAlive(nodeTimestamp, ttl)) {
-      throw new OutOfTTLException(nodeTimestamp, 
(CommonDateTimeUtils.currentTime() - ttl));
-    }
     writeLock("writeObject");
     try {
       String relativeTmpPathString = objectNode.getFilePath() + ".tmp";
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ObjectTypeUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ObjectTypeUtils.java
index 4b5214c738d..fc1bb40b93f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ObjectTypeUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/ObjectTypeUtils.java
@@ -62,11 +62,24 @@ public class ObjectTypeUtils {
     if (!file.isPresent()) {
       return;
     }
+    File parentFile = file.get().getParentFile();
+    File tmpFile = new File(parentFile, file.get().getName().replace(".bin", 
".tmp"));
+    File bakFile = new File(parentFile, file.get().getName().replace(".bin", 
".bak"));
     logger.info("Remove object file {}", file.get().getAbsolutePath());
-    try {
-      Files.deleteIfExists(file.get().toPath());
-    } catch (IOException e) {
-      logger.error("Failed to remove object file {}", 
file.get().getAbsolutePath(), e);
+    for (int i = 0; i < 2; i++) {
+      try {
+        if (Files.deleteIfExists(file.get().toPath())) {
+          return;
+        }
+        if (Files.deleteIfExists(tmpFile.toPath())) {
+          return;
+        }
+        if (Files.deleteIfExists(bakFile.toPath())) {
+          return;
+        }
+      } catch (IOException e) {
+        logger.error("Failed to remove object file {}", 
file.get().getAbsolutePath(), e);
+      }
     }
   }
 }

Reply via email to