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

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

commit 9d09a8b650a513a8491c9e2d4dc8f4c2d05d225b
Author: shuwenwei <55970239+shuwen...@users.noreply.github.com>
AuthorDate: Wed Aug 6 14:09:18 2025 +0800

    Replace the key in FileReaderManager to TsFileID
---
 .../db/storageengine/buffer/BloomFilterCache.java  |  7 +-
 .../iotdb/db/storageengine/buffer/ChunkCache.java  |  3 +-
 .../buffer/TimeSeriesMetadataCache.java            |  5 +-
 .../db/storageengine/dataregion/DataRegion.java    |  2 +-
 .../execute/utils/MultiTsFileDeviceIterator.java   |  3 +-
 .../writer/ReadPointCrossCompactionWriter.java     |  3 +-
 .../dataregion/memtable/TsFileProcessor.java       |  2 +
 .../dataregion/read/control/FileReaderManager.java | 85 ++++++++++++----------
 .../filescan/impl/ClosedFileScanHandleImpl.java    |  8 +-
 .../filescan/impl/DiskAlignedChunkHandleImpl.java  |  4 +-
 .../read/filescan/impl/DiskChunkHandleImpl.java    |  7 +-
 .../read/filescan/model/AbstractChunkOffset.java   |  3 +-
 .../read/filescan/model/AlignedChunkOffset.java    |  4 +-
 .../read/filescan/model/ChunkOffset.java           |  5 +-
 .../storageengine/buffer/BloomFilterCacheTest.java |  6 +-
 .../compaction/CompactionWithMinTimestampTest.java |  4 +-
 .../compaction/FastAlignedCrossCompactionTest.java |  4 +-
 .../FastCrossCompactionPerformerTest.java          |  4 +-
 .../FastInnerCompactionPerformerTest.java          |  4 +-
 .../FastNonAlignedCrossCompactionTest.java         |  4 +-
 .../compaction/ReadChunkInnerCompactionTest.java   |  4 +-
 .../ReadPointAlignedCrossCompactionTest.java       |  4 +-
 .../ReadPointCompactionPerformerTest.java          |  4 +-
 .../ReadPointNonAlignedCrossCompactionTest.java    |  4 +-
 .../cross/CrossSpaceCompactionSelectorTest.java    |  4 +-
 .../inner/InnerSpaceCompactionSelectorTest.java    |  4 +-
 .../SizeTieredCompactionRecoverTest.java           |  2 +-
 .../utils/MultiTsFileDeviceIteratorTest.java       |  4 +-
 .../read/control/FileReaderManagerTest.java        |  4 +-
 29 files changed, 116 insertions(+), 85 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
index e6407c6606c..a18cfe774b2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCache.java
@@ -199,7 +199,12 @@ public class BloomFilterCache {
       try {
         cacheMiss = true;
         TsFileSequenceReader reader =
-            FileReaderManager.getInstance().get(bloomFilterCacheKey.filePath, 
true, ioSizeRecorder);
+            FileReaderManager.getInstance()
+                .get(
+                    bloomFilterCacheKey.filePath,
+                    bloomFilterCacheKey.tsFileID,
+                    true,
+                    ioSizeRecorder);
         return reader.readBloomFilter(ioSizeRecorder);
       } catch (IOException e) {
         throw new IoTDBIORuntimeException(e);
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 b87351444cc..83b9929a983 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
@@ -289,7 +289,8 @@ public class ChunkCache {
       try {
         cacheMiss = true;
         TsFileSequenceReader reader =
-            FileReaderManager.getInstance().get(key.getFilePath(), key.closed, 
ioSizeRecorder);
+            FileReaderManager.getInstance()
+                .get(key.getFilePath(), key.tsFileID, key.closed, 
ioSizeRecorder);
         Chunk chunk = reader.readMemChunk(key.offsetOfChunkHeader, 
ioSizeRecorder);
         // to save memory footprint, we don't save measurementId in 
ChunkHeader of Chunk
         chunk.getHeader().setMeasurementID(null);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
index 44324ae2226..ca9f72dbe84 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/buffer/TimeSeriesMetadataCache.java
@@ -127,7 +127,8 @@ public class TimeSeriesMetadataCache {
 
         // bloom filter part
         TsFileSequenceReader reader =
-            FileReaderManager.getInstance().get(filePath, true, 
bloomFilterIoSizeRecorder);
+            FileReaderManager.getInstance()
+                .get(filePath, key.tsFileID, true, bloomFilterIoSizeRecorder);
         BloomFilter bloomFilter = 
reader.readBloomFilter(bloomFilterIoSizeRecorder);
         
queryContext.getQueryStatistics().getLoadBloomFilterFromDiskCount().incrementAndGet();
         if (bloomFilter != null
@@ -192,7 +193,7 @@ public class TimeSeriesMetadataCache {
             loadBloomFilterTime = System.nanoTime() - loadBloomFilterStartTime;
             TsFileSequenceReader reader =
                 FileReaderManager.getInstance()
-                    .get(filePath, true, timeSeriesMetadataIoSizeRecorder);
+                    .get(filePath, key.tsFileID, true, 
timeSeriesMetadataIoSizeRecorder);
             List<TimeseriesMetadata> timeSeriesMetadataList =
                 reader.readTimeseriesMetadata(
                     key.device,
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 371807e9dd1..7200d3da018 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
@@ -2868,7 +2868,7 @@ public class DataRegion implements IDataRegionForQuery {
       if (!oldTsFileResource.getTsFile().exists()) {
         tsFileManager.remove(oldTsFileResource, oldTsFileResource.isSeq());
       }
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(oldTsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(oldTsFileResource.getTsFileID());
       oldTsFileResource.setSettleTsFileCallBack(null);
       SettleService.getINSTANCE().getFilesToBeSettledCount().addAndGet(-1);
     } catch (IOException e) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
index a53d8a40bdb..cbc6ac1b686 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/MultiTsFileDeviceIterator.java
@@ -119,7 +119,8 @@ public class MultiTsFileDeviceIterator implements 
AutoCloseable {
         this.tsFileResourcesSortedByDesc, 
TsFileResource::compareFileCreationOrderByDesc);
     for (TsFileResource tsFileResource : tsFileResourcesSortedByDesc) {
       TsFileSequenceReader reader =
-          FileReaderManager.getInstance().get(tsFileResource.getTsFilePath(), 
true);
+          FileReaderManager.getInstance()
+              .get(tsFileResource.getTsFilePath(), 
tsFileResource.getTsFileID(), true);
       readerMap.put(tsFileResource, reader);
       deviceIteratorMap.put(tsFileResource, 
reader.getAllDevicesIteratorWithIsAligned());
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
index a3c24af565c..231bd753d77 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/ReadPointCrossCompactionWriter.java
@@ -73,7 +73,8 @@ public class ReadPointCrossCompactionWriter extends 
AbstractCrossCompactionWrite
 
   @Override
   protected TsFileSequenceReader getFileReader(TsFileResource resource) throws 
IOException {
-    return FileReaderManager.getInstance().get(resource.getTsFilePath(), true);
+    return FileReaderManager.getInstance()
+        .get(resource.getTsFilePath(), resource.getTsFileID(), true);
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
index ab25275aebe..34070a848c9 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
@@ -1670,6 +1670,7 @@ public class TsFileProcessor {
                   deviceID,
                   measurement,
                   filePath,
+                  tsFileResource.getTsFileID(),
                   false,
                   valueChunkMetaData.getOffsetOfChunkHeader(),
                   valueChunkMetaData.getStatistics(),
@@ -1694,6 +1695,7 @@ public class TsFileProcessor {
                 deviceID,
                 measurement,
                 filePath,
+                tsFileResource.getTsFileID(),
                 false,
                 chunkMetadata.getOffsetOfChunkHeader(),
                 chunkMetadata.getStatistics()));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
index a814a1e148b..41386c9b69d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManager.java
@@ -20,6 +20,7 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.control;
 
 import org.apache.iotdb.commons.utils.TestOnly;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 
 import org.apache.tsfile.common.conf.TSFileConfig;
@@ -58,25 +59,25 @@ public class FileReaderManager {
    * the key of closedFileReaderMap is the file path and the value of 
closedFileReaderMap is the
    * corresponding reader.
    */
-  private Map<String, TsFileSequenceReader> closedFileReaderMap;
+  private Map<TsFileID, TsFileSequenceReader> closedFileReaderMap;
 
   /**
    * the key of unclosedFileReaderMap is the file path and the value of 
unclosedFileReaderMap is the
    * corresponding reader.
    */
-  private Map<String, TsFileSequenceReader> unclosedFileReaderMap;
+  private Map<TsFileID, TsFileSequenceReader> unclosedFileReaderMap;
 
   /**
    * the key of closedFileReaderMap is the file path and the value of 
closedFileReaderMap is the
    * file's reference count.
    */
-  private Map<String, AtomicInteger> closedReferenceMap;
+  private Map<TsFileID, AtomicInteger> closedReferenceMap;
 
   /**
    * the key of unclosedFileReaderMap is the file path and the value of 
unclosedFileReaderMap is the
    * file's reference count.
    */
-  private Map<String, AtomicInteger> unclosedReferenceMap;
+  private Map<TsFileID, AtomicInteger> unclosedReferenceMap;
 
   private FileReaderManager() {
     closedFileReaderMap = new ConcurrentHashMap<>();
@@ -89,14 +90,14 @@ public class FileReaderManager {
     return FileReaderManagerHelper.INSTANCE;
   }
 
-  public synchronized void closeFileAndRemoveReader(String filePath) throws 
IOException {
-    closedReferenceMap.remove(filePath);
-    TsFileSequenceReader reader = closedFileReaderMap.remove(filePath);
+  public synchronized void closeFileAndRemoveReader(TsFileID tsFileID) throws 
IOException {
+    closedReferenceMap.remove(tsFileID);
+    TsFileSequenceReader reader = closedFileReaderMap.remove(tsFileID);
     if (reader != null) {
       reader.close();
     }
-    unclosedReferenceMap.remove(filePath);
-    reader = unclosedFileReaderMap.remove(filePath);
+    unclosedReferenceMap.remove(tsFileID);
+    reader = unclosedFileReaderMap.remove(tsFileID);
     if (reader != null) {
       reader.close();
     }
@@ -107,15 +108,16 @@ public class FileReaderManager {
    * exists, just get it from closedFileReaderMap or unclosedFileReaderMap 
depending on isClosing .
    * Otherwise a new reader will be created and cached.
    *
-   * @param filePath the path of the file, of which the reader is desired.
+   * @param filePath the path of the tsfile
+   * @param tsFileID the id of the tsfile, of which the reader is desired.
    * @param isClosed whether the corresponding file still receives insertions 
or not.
    * @return the reader of the file specified by filePath.
    * @throws IOException when reader cannot be created.
    */
   @SuppressWarnings("squid:S2095")
-  public synchronized TsFileSequenceReader get(String filePath, boolean 
isClosed)
+  public synchronized TsFileSequenceReader get(String filePath, TsFileID 
tsFileID, boolean isClosed)
       throws IOException {
-    return get(filePath, isClosed, null);
+    return get(filePath, tsFileID, isClosed, null);
   }
 
   /**
@@ -123,7 +125,8 @@ public class FileReaderManager {
    * exists, just get it from closedFileReaderMap or unclosedFileReaderMap 
depending on isClosing .
    * Otherwise a new reader will be created and cached.
    *
-   * @param filePath the path of the file, of which the reader is desired.
+   * @param filePath the path of the tsfile
+   * @param tsFileID the id of the tsfile, of which the reader is desired.
    * @param isClosed whether the corresponding file still receives insertions 
or not.
    * @param ioSizeRecorder can be null
    * @return the reader of the file specified by filePath.
@@ -131,11 +134,12 @@ public class FileReaderManager {
    */
   @SuppressWarnings("squid:S2095")
   public synchronized TsFileSequenceReader get(
-      String filePath, boolean isClosed, LongConsumer ioSizeRecorder) throws 
IOException {
+      String filePath, TsFileID tsFileID, boolean isClosed, LongConsumer 
ioSizeRecorder)
+      throws IOException {
 
-    Map<String, TsFileSequenceReader> readerMap =
+    Map<TsFileID, TsFileSequenceReader> readerMap =
         !isClosed ? unclosedFileReaderMap : closedFileReaderMap;
-    if (!readerMap.containsKey(filePath)) {
+    if (!readerMap.containsKey(tsFileID)) {
       int currentOpenedReaderCount = readerMap.size();
       if (currentOpenedReaderCount >= MAX_CACHED_FILE_SIZE
           && (currentOpenedReaderCount % PRINT_INTERVAL == 0)) {
@@ -156,11 +160,11 @@ public class FileReaderManager {
                   "The version of TsFile %s is not correct: %s", filePath, 
versionNumber));
         }
       }
-      readerMap.put(filePath, tsFileReader);
+      readerMap.put(tsFileID, tsFileReader);
       return tsFileReader;
     }
 
-    return readerMap.get(filePath);
+    return readerMap.get(tsFileID);
   }
 
   /**
@@ -172,11 +176,11 @@ public class FileReaderManager {
     synchronized (this) {
       if (!isClosed) {
         unclosedReferenceMap
-            .computeIfAbsent(tsFile.getTsFilePath(), k -> new AtomicInteger())
+            .computeIfAbsent(tsFile.getTsFileID(), k -> new AtomicInteger())
             .getAndIncrement();
       } else {
         closedReferenceMap
-            .computeIfAbsent(tsFile.getTsFilePath(), k -> new AtomicInteger())
+            .computeIfAbsent(tsFile.getTsFileID(), k -> new AtomicInteger())
             .getAndIncrement();
       }
     }
@@ -188,29 +192,30 @@ public class FileReaderManager {
    */
   public void decreaseFileReaderReference(TsFileResource tsFile, boolean 
isClosed) {
     synchronized (this) {
-      if (!isClosed && 
unclosedReferenceMap.containsKey(tsFile.getTsFilePath())) {
-        if (unclosedReferenceMap.get(tsFile.getTsFilePath()).decrementAndGet() 
== 0) {
-          closeUnUsedReaderAndRemoveRef(tsFile.getTsFilePath(), false);
+      if (!isClosed && unclosedReferenceMap.containsKey(tsFile.getTsFileID())) 
{
+        if (unclosedReferenceMap.get(tsFile.getTsFileID()).decrementAndGet() 
== 0) {
+          closeUnUsedReaderAndRemoveRef(tsFile.getTsFilePath(), 
tsFile.getTsFileID(), false);
         }
-      } else if (closedReferenceMap.containsKey(tsFile.getTsFilePath())
-          && (closedReferenceMap.get(tsFile.getTsFilePath()).decrementAndGet() 
== 0)) {
-        closeUnUsedReaderAndRemoveRef(tsFile.getTsFilePath(), true);
+      } else if (closedReferenceMap.containsKey(tsFile.getTsFileID())
+          && (closedReferenceMap.get(tsFile.getTsFileID()).decrementAndGet() 
== 0)) {
+        closeUnUsedReaderAndRemoveRef(tsFile.getTsFilePath(), 
tsFile.getTsFileID(), true);
       }
     }
     tsFile.readUnlock();
   }
 
-  private void closeUnUsedReaderAndRemoveRef(String tsFilePath, boolean 
isClosed) {
-    Map<String, TsFileSequenceReader> readerMap =
+  private void closeUnUsedReaderAndRemoveRef(
+      String tsFilePath, TsFileID tsFileID, boolean isClosed) {
+    Map<TsFileID, TsFileSequenceReader> readerMap =
         isClosed ? closedFileReaderMap : unclosedFileReaderMap;
-    Map<String, AtomicInteger> refMap = isClosed ? closedReferenceMap : 
unclosedReferenceMap;
+    Map<TsFileID, AtomicInteger> refMap = isClosed ? closedReferenceMap : 
unclosedReferenceMap;
     synchronized (this) {
       // check ref num again
-      if (refMap.get(tsFilePath).get() != 0) {
+      if (refMap.get(tsFileID).get() != 0) {
         return;
       }
 
-      TsFileSequenceReader reader = readerMap.get(tsFilePath);
+      TsFileSequenceReader reader = readerMap.get(tsFileID);
       if (reader != null) {
         try {
           reader.close();
@@ -218,8 +223,8 @@ public class FileReaderManager {
           logger.error("Can not close TsFileSequenceReader {} !", 
reader.getFileName(), e);
         }
       }
-      readerMap.remove(tsFilePath);
-      refMap.remove(tsFilePath);
+      readerMap.remove(tsFileID);
+      refMap.remove(tsFileID);
       if (resourceLogger.isDebugEnabled()) {
         resourceLogger.debug("{} TsFileReader is closed because of no 
reference.", tsFilePath);
       }
@@ -233,10 +238,10 @@ public class FileReaderManager {
    * @throws IOException if failed to close file handlers, IOException will be 
thrown
    */
   public synchronized void closeAndRemoveAllOpenedReaders() throws IOException 
{
-    Iterator<Map.Entry<String, TsFileSequenceReader>> iterator =
+    Iterator<Map.Entry<TsFileID, TsFileSequenceReader>> iterator =
         closedFileReaderMap.entrySet().iterator();
     while (iterator.hasNext()) {
-      Map.Entry<String, TsFileSequenceReader> entry = iterator.next();
+      Map.Entry<TsFileID, TsFileSequenceReader> entry = iterator.next();
       entry.getValue().close();
       if (resourceLogger.isDebugEnabled()) {
         resourceLogger.debug("{} closedTsFileReader is closed.", 
entry.getKey());
@@ -246,7 +251,7 @@ public class FileReaderManager {
     }
     iterator = unclosedFileReaderMap.entrySet().iterator();
     while (iterator.hasNext()) {
-      Map.Entry<String, TsFileSequenceReader> entry = iterator.next();
+      Map.Entry<TsFileID, TsFileSequenceReader> entry = iterator.next();
       entry.getValue().close();
       if (resourceLogger.isDebugEnabled()) {
         resourceLogger.debug("{} unclosedTsFileReader is closed.", 
entry.getKey());
@@ -258,17 +263,17 @@ public class FileReaderManager {
 
   /** This method is only for unit tests. */
   public synchronized boolean contains(TsFileResource tsFile, boolean 
isClosed) {
-    return (isClosed && 
closedFileReaderMap.containsKey(tsFile.getTsFilePath()))
-        || (!isClosed && 
unclosedFileReaderMap.containsKey(tsFile.getTsFilePath()));
+    return (isClosed && closedFileReaderMap.containsKey(tsFile.getTsFileID()))
+        || (!isClosed && 
unclosedFileReaderMap.containsKey(tsFile.getTsFileID()));
   }
 
   @TestOnly
-  public Map<String, TsFileSequenceReader> getClosedFileReaderMap() {
+  public Map<TsFileID, TsFileSequenceReader> getClosedFileReaderMap() {
     return closedFileReaderMap;
   }
 
   @TestOnly
-  public Map<String, TsFileSequenceReader> getUnclosedFileReaderMap() {
+  public Map<TsFileID, TsFileSequenceReader> getUnclosedFileReaderMap() {
     return unclosedFileReaderMap;
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/ClosedFileScanHandleImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/ClosedFileScanHandleImpl.java
index 1bbc6dc47c4..9236924d192 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/ClosedFileScanHandleImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/ClosedFileScanHandleImpl.java
@@ -30,6 +30,7 @@ import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model.Abstract
 import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model.AbstractDeviceChunkMetaData;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model.AlignedDeviceChunkMetaData;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model.DeviceChunkMetaData;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import 
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.DeviceTimeIndex;
 import 
org.apache.iotdb.db.storageengine.dataregion.tsfile.timeindex.ITimeIndex;
@@ -117,7 +118,8 @@ public class ClosedFileScanHandleImpl implements 
IFileScanHandle {
   @Override
   public Iterator<AbstractDeviceChunkMetaData> getAllDeviceChunkMetaData() 
throws IOException {
 
-    TsFileSequenceReader tsFileReader = 
FileReaderManager.getInstance().get(getFilePath(), true);
+    TsFileSequenceReader tsFileReader =
+        FileReaderManager.getInstance().get(getFilePath(), 
tsFileResource.getTsFileID(), true);
     TsFileDeviceIterator deviceIterator = 
tsFileReader.getAllDevicesIteratorWithIsAligned();
 
     List<AbstractDeviceChunkMetaData> deviceChunkMetaDataList = new 
LinkedList<>();
@@ -170,10 +172,12 @@ public class ClosedFileScanHandleImpl implements 
IFileScanHandle {
       List<Statistics<? extends Serializable>> statisticsList,
       List<Integer> orderedIndexList) {
     String filePath = tsFileResource.getTsFilePath();
+    TsFileID tsFileID = tsFileResource.getTsFileID();
     List<IChunkHandle> chunkHandleList = new ArrayList<>();
     for (int i : orderedIndexList) {
       AbstractChunkOffset chunkOffset = chunkInfoList.get(i);
-      chunkHandleList.add(chunkOffset.generateChunkHandle(filePath, 
statisticsList.get(i)));
+      chunkHandleList.add(
+          chunkOffset.generateChunkHandle(filePath, tsFileID, 
statisticsList.get(i)));
     }
     return chunkHandleList.iterator();
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskAlignedChunkHandleImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskAlignedChunkHandleImpl.java
index b231a4bc118..789c6d8b4b0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskAlignedChunkHandleImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskAlignedChunkHandleImpl.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.read.filescan.impl;
 
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 import org.apache.iotdb.db.storageengine.dataregion.utils.SharedTimeDataBuffer;
 
 import org.apache.tsfile.file.metadata.IDeviceID;
@@ -41,11 +42,12 @@ public class DiskAlignedChunkHandleImpl extends 
DiskChunkHandleImpl {
       IDeviceID deviceID,
       String measurement,
       String filePath,
+      TsFileID tsFileID,
       boolean isTsFileClosed,
       long offset,
       Statistics<? extends Serializable> chunkStatistic,
       SharedTimeDataBuffer sharedTimeDataBuffer) {
-    super(deviceID, measurement, filePath, isTsFileClosed, offset, 
chunkStatistic);
+    super(deviceID, measurement, filePath, tsFileID, isTsFileClosed, offset, 
chunkStatistic);
     this.sharedTimeDataBuffer = sharedTimeDataBuffer;
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskChunkHandleImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskChunkHandleImpl.java
index 68ad659d90f..0bbbdd604f6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskChunkHandleImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/impl/DiskChunkHandleImpl.java
@@ -21,6 +21,7 @@ package 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.impl;
 
 import 
org.apache.iotdb.db.storageengine.dataregion.read.control.FileReaderManager;
 import org.apache.iotdb.db.storageengine.dataregion.read.filescan.IChunkHandle;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 
 import org.apache.tsfile.common.conf.TSFileDescriptor;
 import org.apache.tsfile.encoding.decoder.Decoder;
@@ -46,6 +47,7 @@ public class DiskChunkHandleImpl implements IChunkHandle {
   private final IDeviceID deviceID;
   private final String measurement;
   private final String filePath;
+  private final TsFileID tsFileID;
   protected ChunkHeader currentChunkHeader;
   protected PageHeader currentPageHeader;
   protected ByteBuffer currentChunkDataBuffer;
@@ -63,6 +65,7 @@ public class DiskChunkHandleImpl implements IChunkHandle {
       IDeviceID deviceID,
       String measurement,
       String filePath,
+      TsFileID tsFileID,
       boolean isTsFileClosed,
       long offset,
       Statistics<? extends Serializable> chunkStatistics) {
@@ -71,6 +74,7 @@ public class DiskChunkHandleImpl implements IChunkHandle {
     this.chunkStatistic = chunkStatistics;
     this.offset = offset;
     this.filePath = filePath;
+    this.tsFileID = tsFileID;
     this.tsFileClosed = isTsFileClosed;
   }
 
@@ -94,7 +98,8 @@ public class DiskChunkHandleImpl implements IChunkHandle {
   public void nextPage() throws IOException {
     // read chunk from disk if needed
     if (currentChunkDataBuffer == null) {
-      TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(filePath, tsFileClosed);
+      TsFileSequenceReader reader =
+          FileReaderManager.getInstance().get(filePath, tsFileID, 
tsFileClosed);
       init(reader);
     }
     if (currentChunkDataBuffer.hasRemaining()) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AbstractChunkOffset.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AbstractChunkOffset.java
index 2a66a1fde6f..f115486641b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AbstractChunkOffset.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AbstractChunkOffset.java
@@ -20,6 +20,7 @@
 package org.apache.iotdb.db.storageengine.dataregion.read.filescan.model;
 
 import org.apache.iotdb.db.storageengine.dataregion.read.filescan.IChunkHandle;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 
 import org.apache.tsfile.file.metadata.IDeviceID;
 import org.apache.tsfile.file.metadata.statistics.Statistics;
@@ -39,7 +40,7 @@ public abstract class AbstractChunkOffset {
   }
 
   public abstract IChunkHandle generateChunkHandle(
-      String filePath, Statistics<? extends Serializable> statistics);
+      String filePath, TsFileID tsFileID, Statistics<? extends Serializable> 
statistics);
 
   public IDeviceID getDeviceID() {
     return deviceID;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AlignedChunkOffset.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AlignedChunkOffset.java
index 2b4391b644b..66e4cc616ff 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AlignedChunkOffset.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/AlignedChunkOffset.java
@@ -21,6 +21,7 @@ package 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model;
 
 import org.apache.iotdb.db.storageengine.dataregion.read.filescan.IChunkHandle;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.impl.DiskAlignedChunkHandleImpl;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 import org.apache.iotdb.db.storageengine.dataregion.utils.SharedTimeDataBuffer;
 
 import org.apache.tsfile.file.metadata.IDeviceID;
@@ -44,11 +45,12 @@ public class AlignedChunkOffset extends AbstractChunkOffset 
{
 
   @Override
   public IChunkHandle generateChunkHandle(
-      String filePath, Statistics<? extends Serializable> statistics) {
+      String filePath, TsFileID tsFileID, Statistics<? extends Serializable> 
statistics) {
     return new DiskAlignedChunkHandleImpl(
         getDeviceID(),
         getMeasurement(),
         filePath,
+        tsFileID,
         true,
         getOffSet(),
         statistics,
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/ChunkOffset.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/ChunkOffset.java
index f48b5396c00..f4b27a3ba9e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/ChunkOffset.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/filescan/model/ChunkOffset.java
@@ -21,6 +21,7 @@ package 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.model;
 
 import org.apache.iotdb.db.storageengine.dataregion.read.filescan.IChunkHandle;
 import 
org.apache.iotdb.db.storageengine.dataregion.read.filescan.impl.DiskChunkHandleImpl;
+import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileID;
 
 import org.apache.tsfile.file.metadata.IDeviceID;
 import org.apache.tsfile.file.metadata.statistics.Statistics;
@@ -35,8 +36,8 @@ public class ChunkOffset extends AbstractChunkOffset {
 
   @Override
   public IChunkHandle generateChunkHandle(
-      String filePath, Statistics<? extends Serializable> statistics) {
+      String filePath, TsFileID tsFileID, Statistics<? extends Serializable> 
statistics) {
     return new DiskChunkHandleImpl(
-        getDeviceID(), getMeasurement(), filePath, true, getOffSet(), 
statistics);
+        getDeviceID(), getMeasurement(), filePath, tsFileID, true, 
getOffSet(), statistics);
   }
 }
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
index e6a65d5eed9..d66a17935c9 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/buffer/BloomFilterCacheTest.java
@@ -96,7 +96,7 @@ public class BloomFilterCacheTest {
         TsFileID tsFileID = new TsFileID(filePath);
         BloomFilter bloomFilter =
             bloomFilterCache.get(new 
BloomFilterCache.BloomFilterCacheKey(filePath, tsFileID));
-        TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(filePath, true);
+        TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(filePath, tsFileID, true);
         BloomFilter bloomFilter1 = reader.readBloomFilter();
         Assert.assertEquals(bloomFilter1, bloomFilter);
         reader.close();
@@ -115,7 +115,7 @@ public class BloomFilterCacheTest {
       BloomFilterCache.BloomFilterCacheKey key =
           new BloomFilterCache.BloomFilterCacheKey(path, tsFileID);
       BloomFilter bloomFilter = bloomFilterCache.get(key);
-      TsFileSequenceReader reader = FileReaderManager.getInstance().get(path, 
true);
+      TsFileSequenceReader reader = FileReaderManager.getInstance().get(path, 
tsFileID, true);
       BloomFilter bloomFilter1 = reader.readBloomFilter();
       Assert.assertEquals(bloomFilter1, bloomFilter);
       bloomFilterCache.remove(key);
@@ -136,7 +136,7 @@ public class BloomFilterCacheTest {
         BloomFilterCache.BloomFilterCacheKey key =
             new BloomFilterCache.BloomFilterCacheKey(path, tsFileID);
         BloomFilter bloomFilter = bloomFilterCache.get(key);
-        TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(path, true);
+        TsFileSequenceReader reader = 
FileReaderManager.getInstance().get(path, tsFileID, true);
         BloomFilter bloomFilter1 = reader.readBloomFilter();
         Assert.assertEquals(bloomFilter1, bloomFilter);
         reader.close();
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWithMinTimestampTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWithMinTimestampTest.java
index 2b3c5d51c86..c23db43eeb1 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWithMinTimestampTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionWithMinTimestampTest.java
@@ -65,10 +65,10 @@ public class CompactionWithMinTimestampTest extends 
AbstractCompactionTest {
     super.tearDown();
     Thread.currentThread().setName(oldThreadName);
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
index d7d415c8409..f7b03cee911 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastAlignedCrossCompactionTest.java
@@ -77,10 +77,10 @@ public class FastAlignedCrossCompactionTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
index 55d7636e64a..cc31220895a 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastCrossCompactionPerformerTest.java
@@ -96,10 +96,10 @@ public class FastCrossCompactionPerformerTest extends 
AbstractCompactionTest {
     validateSeqFiles();
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     targetResources.clear();
   }
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
index 26e7b4554a1..5ca49febb25 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastInnerCompactionPerformerTest.java
@@ -95,10 +95,10 @@ public class FastInnerCompactionPerformerTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     IoTDBDescriptor.getInstance()
         .getConfig()
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
index 7236b402a83..295bb1201d3 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/FastNonAlignedCrossCompactionTest.java
@@ -79,10 +79,10 @@ public class FastNonAlignedCrossCompactionTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
index 7e7c74b2b97..6aef117b80a 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadChunkInnerCompactionTest.java
@@ -90,10 +90,10 @@ public class ReadChunkInnerCompactionTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
index 447791d58a6..b9b3ec35590 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointAlignedCrossCompactionTest.java
@@ -80,10 +80,10 @@ public class ReadPointAlignedCrossCompactionTest extends 
AbstractCompactionTest
     super.tearDown();
     Thread.currentThread().setName(oldThreadName);
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
index 9a0590aa13c..c1582d9b6ed 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointCompactionPerformerTest.java
@@ -87,10 +87,10 @@ public class ReadPointCompactionPerformerTest extends 
AbstractCompactionTest {
     super.tearDown();
     Thread.currentThread().setName(oldThreadName);
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
index d0a0543e35d..657117a5bc6 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/ReadPointNonAlignedCrossCompactionTest.java
@@ -81,10 +81,10 @@ public class ReadPointNonAlignedCrossCompactionTest extends 
AbstractCompactionTe
     super.tearDown();
     Thread.currentThread().setName(oldThreadName);
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
index 02408e24c80..88cd04bb8e6 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/cross/CrossSpaceCompactionSelectorTest.java
@@ -63,10 +63,10 @@ public class CrossSpaceCompactionSelectorTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
index 46774b88fff..151238f657a 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/InnerSpaceCompactionSelectorTest.java
@@ -57,10 +57,10 @@ public class InnerSpaceCompactionSelectorTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
index 42dd5375864..b95fb1a81e5 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/sizetiered/SizeTieredCompactionRecoverTest.java
@@ -1435,7 +1435,7 @@ public class SizeTieredCompactionRecoverTest extends 
AbstractInnerSpaceCompactio
 
   private void closeTsFileSequenceReader() throws IOException {
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
   }
 }
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
index 863efce14cf..78adf898051 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/utils/MultiTsFileDeviceIteratorTest.java
@@ -81,10 +81,10 @@ public class MultiTsFileDeviceIteratorTest extends 
AbstractCompactionTest {
   public void tearDown() throws IOException, StorageEngineException {
     super.tearDown();
     for (TsFileResource tsFileResource : seqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     for (TsFileResource tsFileResource : unseqResources) {
-      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFilePath());
+      
FileReaderManager.getInstance().closeFileAndRemoveReader(tsFileResource.getTsFileID());
     }
     Thread.currentThread().setName(oldThreadName);
   }
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManagerTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManagerTest.java
index 11dcf4193e2..a174b4a33e2 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManagerTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/control/FileReaderManagerTest.java
@@ -80,7 +80,7 @@ public class FileReaderManagerTest {
                 for (int i = 1; i <= 6; i++) {
                   TsFileResource tsFile = tsFileResources[i];
                   testManager.addFilePathToMap(1L, tsFile, false);
-                  manager.get(tsFile.getTsFilePath(), false);
+                  manager.get(tsFile.getTsFilePath(), tsFile.getTsFileID(), 
false);
                   Assert.assertTrue(manager.contains(tsFile, false));
                 }
                 for (int i = 1; i <= 6; i++) {
@@ -103,7 +103,7 @@ public class FileReaderManagerTest {
                 for (int i = 4; i <= MAX_FILE_SIZE; i++) {
                   TsFileResource tsFile = tsFileResources[i];
                   testManager.addFilePathToMap(2L, tsFile, false);
-                  manager.get(tsFile.getTsFilePath(), false);
+                  manager.get(tsFile.getTsFilePath(), tsFile.getTsFileID(), 
false);
                   Assert.assertTrue(manager.contains(tsFile, false));
                 }
                 for (int i = 4; i <= MAX_FILE_SIZE; i++) {

Reply via email to