This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 5b27bf3a780 [To dev/1.3] Ignore not exist when storage is not ready
5b27bf3a780 is described below
commit 5b27bf3a7809b9f74c99523474b01bbe836c8256
Author: shuwenwei <[email protected]>
AuthorDate: Wed Jun 4 14:03:11 2025 +0800
[To dev/1.3] Ignore not exist when storage is not ready
---
.../execution/fragment/FragmentInstanceContext.java | 10 ++++++++++
.../execution/operator/source/FileLoaderUtils.java | 16 ++++++++++------
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
index ae63887e645..84797cbfad9 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/fragment/FragmentInstanceContext.java
@@ -34,6 +34,7 @@ import
org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
import
org.apache.iotdb.db.queryengine.plan.planner.memory.MemoryReservationManager;
import
org.apache.iotdb.db.queryengine.plan.planner.memory.ThreadSafeMemoryReservationManager;
import org.apache.iotdb.db.queryengine.plan.planner.plan.TimePredicate;
+import org.apache.iotdb.db.storageengine.StorageEngine;
import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
import org.apache.iotdb.db.storageengine.dataregion.IDataRegionForQuery;
import org.apache.iotdb.db.storageengine.dataregion.read.IQueryDataSource;
@@ -97,6 +98,10 @@ public class FragmentInstanceContext extends QueryContext {
// empty for zero time partitions
private List<Long> timePartitions;
+ // An optimization during restart changes the time index from FILE TIME INDEX
+ // to DEVICE TIME INDEX, which may cause a related validation false positive.
+ private boolean ignoreNotExistsDevice = false;
+
private QueryDataSourceType queryDataSourceType =
QueryDataSourceType.SERIES_SCAN;
private final AtomicLong startNanos = new AtomicLong();
@@ -289,6 +294,7 @@ public class FragmentInstanceContext extends QueryContext {
public void start() {
long now = System.currentTimeMillis();
+ ignoreNotExistsDevice =
!StorageEngine.getInstance().isReadyForNonReadWriteFunctions();
executionStartTime.compareAndSet(null, now);
startNanos.compareAndSet(0, System.nanoTime());
@@ -903,4 +909,8 @@ public class FragmentInstanceContext extends QueryContext {
public long getUnclosedSeqFileNum() {
return unclosedSeqFileNum;
}
+
+ public boolean ignoreNotExistsDevice() {
+ return ignoreNotExistsDevice;
+ }
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
index ab582283b80..c472b9ca607 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/FileLoaderUtils.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.queryengine.execution.operator.source;
import org.apache.iotdb.commons.path.AlignedPath;
import org.apache.iotdb.commons.path.PartialPath;
+import
org.apache.iotdb.db.queryengine.execution.fragment.FragmentInstanceContext;
import org.apache.iotdb.db.queryengine.execution.fragment.QueryContext;
import org.apache.iotdb.db.queryengine.metric.SeriesScanCostMetricSet;
import org.apache.iotdb.db.storageengine.buffer.TimeSeriesMetadataCache;
@@ -77,7 +78,7 @@ public class FileLoaderUtils {
public static TimeseriesMetadata loadTimeSeriesMetadata(
TsFileResource resource,
PartialPath seriesPath,
- QueryContext context,
+ FragmentInstanceContext context,
Filter globalTimeFilter,
Set<String> allSensors,
boolean isSeq)
@@ -100,7 +101,8 @@ public class FileLoaderUtils {
new PlainDeviceID(seriesPath.getDevice()),
seriesPath.getMeasurement()),
allSensors,
- resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE,
+ context.ignoreNotExistsDevice()
+ || resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE,
context.isDebug(),
context);
if (timeSeriesMetadata != null) {
@@ -175,7 +177,7 @@ public class FileLoaderUtils {
public static AlignedTimeSeriesMetadata loadAlignedTimeSeriesMetadata(
TsFileResource resource,
AlignedPath alignedPath,
- QueryContext context,
+ FragmentInstanceContext context,
Filter globalTimeFilter,
boolean isSeq)
throws IOException {
@@ -248,7 +250,7 @@ public class FileLoaderUtils {
private static AlignedTimeSeriesMetadata
loadAlignedTimeSeriesMetadataFromDisk(
TsFileResource resource,
AlignedPath alignedPath,
- QueryContext context,
+ FragmentInstanceContext context,
Filter globalTimeFilter)
throws IOException {
AlignedTimeSeriesMetadata alignedTimeSeriesMetadata = null;
@@ -270,7 +272,8 @@ public class FileLoaderUtils {
filePath,
new TimeSeriesMetadataCacheKey(resource.getTsFileID(), deviceId,
""),
allSensors,
- resource.getTimeIndexType() == ITimeIndex.FILE_TIME_INDEX_TYPE,
+ context.ignoreNotExistsDevice()
+ || resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE,
isDebug,
context);
if (timeColumn != null) {
@@ -293,7 +296,8 @@ public class FileLoaderUtils {
new TimeSeriesMetadataCacheKey(
resource.getTsFileID(), deviceId, valueMeasurement),
allSensors,
- resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE,
+ context.ignoreNotExistsDevice()
+ || resource.getTimeIndexType() ==
ITimeIndex.FILE_TIME_INDEX_TYPE,
isDebug,
context);
exist = (exist || (valueColumn != null));