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

jackietien 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 0dcb04086e3 Get correct TsFileSequenceReader from FileReaderManager
0dcb04086e3 is described below

commit 0dcb04086e3a1589fd77fb0f075a5d90e89c6c79
Author: Jackie Tien <[email protected]>
AuthorDate: Thu Nov 30 18:28:13 2023 +0800

    Get correct TsFileSequenceReader from FileReaderManager
---
 .../org/apache/iotdb/db/storageengine/buffer/ChunkCache.java   | 10 ++++++++--
 .../dataregion/read/reader/chunk/DiskAlignedChunkLoader.java   |  6 ++++--
 .../dataregion/read/reader/chunk/DiskChunkLoader.java          |  6 ++++--
 .../apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java   |  6 ++++--
 4 files changed, 20 insertions(+), 8 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
index 6fe3509994d..84d6f4f728b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/ChunkCache.java
@@ -83,7 +83,7 @@ public class ChunkCache {
                   long startTime = System.nanoTime();
                   try {
                     TsFileSequenceReader reader =
-                        FileReaderManager.getInstance().get(key.getFilePath(), 
true);
+                        FileReaderManager.getInstance().get(key.getFilePath(), 
key.closed);
                     Chunk chunk = reader.readMemChunk(key.offsetOfChunkHeader);
                     // to save memory footprint, we don't save measurementId 
in ChunkHeader of Chunk
                     chunk.getHeader().setMeasurementID(null);
@@ -180,13 +180,19 @@ public class ChunkCache {
 
     private final long offsetOfChunkHeader;
 
-    public ChunkCacheKey(String filePath, TsFileID tsfileId, long 
offsetOfChunkHeader) {
+    // we don't need to compare this field, it's just used to correctly get 
TsFileSequenceReader
+    // from FileReaderManager
+    private final boolean closed;
+
+    public ChunkCacheKey(
+        String filePath, TsFileID tsfileId, long offsetOfChunkHeader, boolean 
closed) {
       this.filePath = filePath;
       this.regionId = tsfileId.regionId;
       this.timePartitionId = tsfileId.timePartitionId;
       this.tsFileVersion = tsfileId.fileVersion;
       this.compactionVersion = tsfileId.compactionVersion;
       this.offsetOfChunkHeader = offsetOfChunkHeader;
+      this.closed = closed;
     }
 
     public long getRetainedSizeInBytes() {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
index 51eba154041..c6c59578c67 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskAlignedChunkLoader.java
@@ -82,7 +82,8 @@ public class DiskAlignedChunkLoader implements IChunkLoader {
                   new ChunkCache.ChunkCacheKey(
                       resource.getTsFilePath(),
                       resource.getTsFileID(),
-                      timeChunkMetadata.getOffsetOfChunkHeader()),
+                      timeChunkMetadata.getOffsetOfChunkHeader(),
+                      resource.isClosed()),
                   timeChunkMetadata.getDeleteIntervalList(),
                   timeChunkMetadata.getStatistics(),
                   debug);
@@ -96,7 +97,8 @@ public class DiskAlignedChunkLoader implements IChunkLoader {
                         new ChunkCache.ChunkCacheKey(
                             resource.getTsFilePath(),
                             resource.getTsFileID(),
-                            valueChunkMetadata.getOffsetOfChunkHeader()),
+                            valueChunkMetadata.getOffsetOfChunkHeader(),
+                            resource.isClosed()),
                         valueChunkMetadata.getDeleteIntervalList(),
                         valueChunkMetadata.getStatistics(),
                         debug));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
index a08b47f4313..efa457262d8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/DiskChunkLoader.java
@@ -57,7 +57,8 @@ public class DiskChunkLoader implements IChunkLoader {
             new ChunkCache.ChunkCacheKey(
                 resource.getTsFilePath(),
                 resource.getTsFileID(),
-                chunkMetaData.getOffsetOfChunkHeader()),
+                chunkMetaData.getOffsetOfChunkHeader(),
+                resource.isClosed()),
             chunkMetaData.getDeleteIntervalList(),
             chunkMetaData.getStatistics(),
             debug);
@@ -79,7 +80,8 @@ public class DiskChunkLoader implements IChunkLoader {
                   new ChunkCache.ChunkCacheKey(
                       resource.getTsFilePath(),
                       resource.getTsFileID(),
-                      chunkMetaData.getOffsetOfChunkHeader()),
+                      chunkMetaData.getOffsetOfChunkHeader(),
+                      resource.isClosed()),
                   chunkMetaData.getDeleteIntervalList(),
                   chunkMetaData.getStatistics(),
                   debug);
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
index 890ec3ffd94..0a10ce8f260 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/ChunkCacheTest.java
@@ -107,7 +107,8 @@ public class ChunkCacheTest {
               new ChunkCache.ChunkCacheKey(
                   tsFileResource.getTsFilePath(),
                   tsFileResource.getTsFileID(),
-                  firstChunkMetadata.getOffsetOfChunkHeader()),
+                  firstChunkMetadata.getOffsetOfChunkHeader(),
+                  true),
               firstChunkMetadata.getDeleteIntervalList(),
               firstChunkMetadata.getStatistics(),
               false);
@@ -122,7 +123,8 @@ public class ChunkCacheTest {
               new ChunkCache.ChunkCacheKey(
                   tsFileResource.getTsFilePath(),
                   tsFileResource.getTsFileID(),
-                  chunkMetadataKey.getOffsetOfChunkHeader()),
+                  chunkMetadataKey.getOffsetOfChunkHeader(),
+                  true),
               chunkMetadataKey.getDeleteIntervalList(),
               chunkMetadataKey.getStatistics(),
               false);

Reply via email to