This is an automated email from the ASF dual-hosted git repository.
justinchen pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 460a570e7f4 [To dev/1.3] Load: Fixed the bug that mods is not deleted
in load tsFile when there are exceptions & Fixed the potential NPE in air gap
agent close() method #16775 (#16776)
460a570e7f4 is described below
commit 460a570e7f4465d60d0e75ab1ef9b98bb5363aeb
Author: Caideyipi <[email protected]>
AuthorDate: Wed Nov 19 09:36:54 2025 +0800
[To dev/1.3] Load: Fixed the bug that mods is not deleted in load tsFile
when there are exceptions & Fixed the potential NPE in air gap agent close()
method #16775 (#16776)
---
.../receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java | 7 +++++--
.../PipeStatementDataTypeConvertExecutionVisitor.java | 4 ++--
.../iotdb/db/storageengine/load/LoadTsFileManager.java | 12 ++++++++++++
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java
index c28e937c305..9aa02b199d4 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java
@@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
+import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@@ -84,8 +85,10 @@ public class IoTDBAirGapReceiverAgent implements IService {
@Override
public void stop() {
try {
- serverSocket.close();
- } catch (IOException e) {
+ if (Objects.nonNull(serverSocket)) {
+ serverSocket.close();
+ }
+ } catch (final IOException e) {
LOGGER.warn("Failed to close IoTDBAirGapReceiverAgent's server socket",
e);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementDataTypeConvertExecutionVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementDataTypeConvertExecutionVisitor.java
index c7e796c463e..2b7b2c2ffd6 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementDataTypeConvertExecutionVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementDataTypeConvertExecutionVisitor.java
@@ -36,9 +36,9 @@ import
org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsOfOneDevice
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
import
org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
+import org.apache.iotdb.db.storageengine.load.LoadTsFileManager;
import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.commons.io.FileUtils;
import org.apache.tsfile.utils.Pair;
import org.apache.tsfile.write.record.Tablet;
import org.slf4j.Logger;
@@ -152,7 +152,7 @@ public class PipeStatementDataTypeConvertExecutionVisitor
}
if (loadTsFileStatement.isDeleteAfterLoad()) {
- loadTsFileStatement.getTsFiles().forEach(FileUtils::deleteQuietly);
+ loadTsFileStatement.getTsFiles().forEach(LoadTsFileManager::cleanTsFile);
}
LOGGER.warn(
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
index 63a72be4af9..4a91f4d6874 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
@@ -379,6 +379,18 @@ public class LoadTsFileManager {
}
}
+ public static void cleanTsFile(final File tsFile) {
+ try {
+ Files.deleteIfExists(tsFile.toPath());
+ Files.deleteIfExists(
+ new File(tsFile.getAbsolutePath() +
TsFileResource.RESOURCE_SUFFIX).toPath());
+ Files.deleteIfExists(
+ new File(tsFile.getAbsolutePath() +
ModificationFile.FILE_SUFFIX).toPath());
+ } catch (final IOException e) {
+ LOGGER.warn("Delete After Loading {} error.", tsFile, e);
+ }
+ }
+
private static class TsFileWriterManager {
private final File taskDir;