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

jackietien 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 40a2c9c5 fix TsFileDeviceIterator (#661)
40a2c9c5 is described below

commit 40a2c9c507fcbdee491d4cac1110493ecf66fcfa
Author: shuwenwei <[email protected]>
AuthorDate: Wed Dec 10 19:24:59 2025 +0800

    fix TsFileDeviceIterator (#661)
---
 .../main/java/org/apache/tsfile/read/LazyTsFileDeviceIterator.java    | 4 ++++
 .../src/main/java/org/apache/tsfile/read/TsFileDeviceIterator.java    | 3 +++
 .../test/java/org/apache/tsfile/read/TsFileDeviceIteratorTest.java    | 1 +
 3 files changed, 8 insertions(+)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/LazyTsFileDeviceIterator.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/LazyTsFileDeviceIterator.java
index 8a88f112..e1c65d7b 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/LazyTsFileDeviceIterator.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/LazyTsFileDeviceIterator.java
@@ -133,6 +133,10 @@ public class LazyTsFileDeviceIterator {
     return currentDeviceAndMeasurementNodeOffsetPair.getLeft();
   }
 
+  public boolean hasCurrent() {
+    return this.currentDeviceAndMeasurementNodeOffsetPair != null;
+  }
+
   public IDeviceID getCurrentDeviceID() {
     if (currentDeviceAndMeasurementNodeOffsetPair == null) {
       throw new IllegalStateException("next() must be called before accessing 
current device");
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileDeviceIterator.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileDeviceIterator.java
index 9086a9ea..dc7d477c 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileDeviceIterator.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileDeviceIterator.java
@@ -42,6 +42,9 @@ public class TsFileDeviceIterator implements 
Iterator<Pair<IDeviceID, Boolean>>
   }
 
   public Pair<IDeviceID, Boolean> current() throws IOException {
+    if (!lazyTsFileDeviceIterator.hasCurrent()) {
+      return null;
+    }
     return new Pair<>(
         lazyTsFileDeviceIterator.getCurrentDeviceID(),
         lazyTsFileDeviceIterator.isCurrentDeviceAligned());
diff --git 
a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileDeviceIteratorTest.java
 
b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileDeviceIteratorTest.java
index 6d5870c1..f75b1ed8 100644
--- 
a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileDeviceIteratorTest.java
+++ 
b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileDeviceIteratorTest.java
@@ -73,6 +73,7 @@ public class TsFileDeviceIteratorTest {
     int deviceFromIterator = 0;
     try (TsFileSequenceReader reader = new TsFileSequenceReader(FILE_PATH)) {
       TsFileDeviceIterator deviceIterator = 
reader.getAllDevicesIteratorWithIsAligned();
+      Assert.assertNull(deviceIterator.current());
       IDeviceID previous = null;
       while (deviceIterator.hasNext()) {
         Pair<IDeviceID, Boolean> next = deviceIterator.next();

Reply via email to