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();