Skip to content

Commit 460a570

Browse files
authored
[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)
1 parent 78630df commit 460a570

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/airgap/IoTDBAirGapReceiverAgent.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.io.IOException;
3333
import java.net.ServerSocket;
3434
import java.net.Socket;
35+
import java.util.Objects;
3536
import java.util.concurrent.ExecutorService;
3637
import java.util.concurrent.atomic.AtomicBoolean;
3738
import java.util.concurrent.atomic.AtomicLong;
@@ -84,8 +85,10 @@ public void start() throws StartupException {
8485
@Override
8586
public void stop() {
8687
try {
87-
serverSocket.close();
88-
} catch (IOException e) {
88+
if (Objects.nonNull(serverSocket)) {
89+
serverSocket.close();
90+
}
91+
} catch (final IOException e) {
8992
LOGGER.warn("Failed to close IoTDBAirGapReceiverAgent's server socket", e);
9093
}
9194

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementDataTypeConvertExecutionVisitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertRowsStatement;
3737
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
3838
import org.apache.iotdb.db.queryengine.plan.statement.crud.LoadTsFileStatement;
39+
import org.apache.iotdb.db.storageengine.load.LoadTsFileManager;
3940
import org.apache.iotdb.rpc.TSStatusCode;
4041

41-
import org.apache.commons.io.FileUtils;
4242
import org.apache.tsfile.utils.Pair;
4343
import org.apache.tsfile.write.record.Tablet;
4444
import org.slf4j.Logger;
@@ -152,7 +152,7 @@ file, new IoTDBPipePattern(null), Long.MIN_VALUE, Long.MAX_VALUE, null, null, tr
152152
}
153153

154154
if (loadTsFileStatement.isDeleteAfterLoad()) {
155-
loadTsFileStatement.getTsFiles().forEach(FileUtils::deleteQuietly);
155+
loadTsFileStatement.getTsFiles().forEach(LoadTsFileManager::cleanTsFile);
156156
}
157157

158158
LOGGER.warn(

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,18 @@ public static void updateWritePointCountMetrics(
379379
}
380380
}
381381

382+
public static void cleanTsFile(final File tsFile) {
383+
try {
384+
Files.deleteIfExists(tsFile.toPath());
385+
Files.deleteIfExists(
386+
new File(tsFile.getAbsolutePath() + TsFileResource.RESOURCE_SUFFIX).toPath());
387+
Files.deleteIfExists(
388+
new File(tsFile.getAbsolutePath() + ModificationFile.FILE_SUFFIX).toPath());
389+
} catch (final IOException e) {
390+
LOGGER.warn("Delete After Loading {} error.", tsFile, e);
391+
}
392+
}
393+
382394
private static class TsFileWriterManager {
383395

384396
private final File taskDir;

0 commit comments

Comments
 (0)