This is an automated email from the ASF dual-hosted git repository.
jiangtian 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 6a11cbe4825 Fix potential NPE in tryGetFLushLock (#16274)
6a11cbe4825 is described below
commit 6a11cbe48259b2cb13dedb6ad60578ed7d55e48a
Author: Jackie Tien <[email protected]>
AuthorDate: Wed Aug 27 09:40:14 2025 +0800
Fix potential NPE in tryGetFLushLock (#16274)
---
.../iotdb/db/storageengine/dataregion/DataRegion.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
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 fc7977b8c12..243cccd6a41 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
@@ -2160,6 +2160,21 @@ public class DataRegion implements IDataRegionForQuery {
&& tsFileResource.isSatisfied(singleDeviceId, globalTimeFilter,
true, isDebug)) {
TsFileProcessor tsFileProcessor = tsFileResource.getProcessor();
try {
+ if (tsFileProcessor == null) {
+ // tsFileProcessor == null means this tsfile is being closed, here
we try to busy loop
+ // until status in TsFileResource has been changed which is
supposed to be the last step
+ // of closing
+ while (!tsFileResource.isClosed() && waitTimeInMs > 0) {
+ TimeUnit.MILLISECONDS.sleep(5);
+ waitTimeInMs -= 5;
+ }
+ if (tsFileResource.isClosed()) {
+ continue;
+ } else {
+ clearAlreadyLockedList(needToUnLockList);
+ return false;
+ }
+ }
long startTime = System.nanoTime();
if (tsFileProcessor.tryReadLock(waitTimeInMs)) {
// minus already consumed time