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

jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new b5c3e0ef0 Don't print exception log when thread is interrupted (#386)
b5c3e0ef0 is described below

commit b5c3e0ef0c2928e217ca2ceca8e33211a2930cd5
Author: shuwenwei <[email protected]>
AuthorDate: Fri Feb 7 15:25:21 2025 +0800

    Don't print exception log when thread is interrupted (#386)
    
    * don't print exception log when thread is interrupted
    
    * modify DiskTSMIterator
---
 .../org/apache/tsfile/write/writer/TsFileIOWriter.java  | 13 ++++++++-----
 .../write/writer/tsmiterator/DiskTSMIterator.java       | 17 +++++++++--------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
index 54244ed08..85bea9c98 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/TsFileIOWriter.java
@@ -440,11 +440,7 @@ public class TsFileIOWriter implements AutoCloseable {
     // serialize the SEPARATOR of MetaData
     ReadWriteIOUtils.write(MetaMarker.SEPARATOR, out.wrapAsStream());
 
-    TSMIterator tsmIterator =
-        hasChunkMetadataInDisk
-            ? TSMIterator.getTSMIteratorInDisk(
-                chunkMetadataTempFile, chunkGroupMetadataList, 
endPosInCMTForDevice)
-            : TSMIterator.getTSMIteratorInMemory(chunkGroupMetadataList);
+    TSMIterator tsmIterator = getTSMIterator();
     Map<IDeviceID, MetadataIndexNode> deviceMetadataIndexMap = new TreeMap<>();
     Queue<MetadataIndexNode> measurementMetadataIndexQueue = new 
ArrayDeque<>();
     IDeviceID currentDevice = null;
@@ -532,6 +528,13 @@ public class TsFileIOWriter implements AutoCloseable {
     ReadWriteIOUtils.write(size, out.wrapAsStream());
   }
 
+  protected TSMIterator getTSMIterator() throws IOException {
+    return hasChunkMetadataInDisk
+        ? TSMIterator.getTSMIteratorInDisk(
+            chunkMetadataTempFile, chunkGroupMetadataList, 
endPosInCMTForDevice)
+        : TSMIterator.getTSMIteratorInMemory(chunkGroupMetadataList);
+  }
+
   /**
    * get the length of normal OutputStream.
    *
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
index fd413b43a..44c596b1d 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/writer/tsmiterator/DiskTSMIterator.java
@@ -28,6 +28,7 @@ import org.apache.tsfile.file.metadata.IDeviceID.Deserializer;
 import org.apache.tsfile.file.metadata.TimeseriesMetadata;
 import org.apache.tsfile.read.common.Path;
 import org.apache.tsfile.read.reader.LocalTsFileInput;
+import org.apache.tsfile.read.reader.TsFileInput;
 import org.apache.tsfile.utils.Pair;
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
@@ -51,8 +52,7 @@ public class DiskTSMIterator extends TSMIterator {
   private static final Logger LOG = 
LoggerFactory.getLogger(DiskTSMIterator.class);
 
   private LinkedList<Long> endPosForEachDevice;
-  private File cmtFile;
-  private LocalTsFileInput input;
+  protected TsFileInput input;
   private long fileLength = 0;
   private long currentPos = 0;
   private long nextEndPosForDevice = 0;
@@ -65,7 +65,6 @@ public class DiskTSMIterator extends TSMIterator {
       LinkedList<Long> endPosForEachDevice)
       throws IOException {
     super(chunkGroupMetadataList);
-    this.cmtFile = cmtFile;
     this.endPosForEachDevice = endPosForEachDevice;
     this.input = new LocalTsFileInput(cmtFile.toPath());
     this.fileLength = cmtFile.length();
@@ -78,22 +77,24 @@ public class DiskTSMIterator extends TSMIterator {
   }
 
   @Override
-  public Pair<Path, TimeseriesMetadata> next() {
+  public Pair<Path, TimeseriesMetadata> next() throws IOException {
     try {
       if (remainsInFile) {
         // deserialize from file
-        return getTimeSerisMetadataFromFile();
+        return getTimeSeriesMetadataFromFile();
       } else {
         // get from memory iterator
         return super.next();
       }
     } catch (IOException e) {
-      LOG.error("Meets IOException when reading timeseries metadata from 
disk", e);
-      return null;
+      if (!Thread.currentThread().isInterrupted()) {
+        LOG.error("Meets IOException when reading timeseries metadata from 
disk", e);
+      }
+      throw e;
     }
   }
 
-  private Pair<Path, TimeseriesMetadata> getTimeSerisMetadataFromFile() throws 
IOException {
+  private Pair<Path, TimeseriesMetadata> getTimeSeriesMetadataFromFile() 
throws IOException {
     if (currentPos == nextEndPosForDevice) {
       // deserialize the current device name
       currentDevice = 
Deserializer.DEFAULT_DESERIALIZER.deserializeFrom(input.wrapAsInputStream());

Reply via email to