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);
+ }
}
}
}