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

jiangtian pushed a commit to branch fix_wal_interruption
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit edcd256c46faac0f8f4caf43aa5a4cd41abe06ba
Author: Tian Jiang <[email protected]>
AuthorDate: Fri Dec 20 11:04:07 2024 +0800

    add catch in WAL-sync thread
---
 .../test/java/org/apache/iotdb/db/it/IoTDBRestartIT.java    |  4 ++--
 .../db/storageengine/dataregion/wal/buffer/WALBuffer.java   | 13 +++++++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRestartIT.java 
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRestartIT.java
index fad08f08c1f..4af52b7a19f 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRestartIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRestartIT.java
@@ -55,7 +55,7 @@ public class IoTDBRestartIT {
 
   @Before
   public void setUp() throws Exception {
-    EnvFactory.getEnv().getConfig().getCommonConfig().setWalMode("SYNC");
+    // EnvFactory.getEnv().getConfig().getCommonConfig().setWalMode("SYNC");
     EnvFactory.getEnv()
         .getConfig()
         .getCommonConfig()
@@ -66,7 +66,7 @@ public class IoTDBRestartIT {
   @After
   public void tearDown() throws Exception {
     EnvFactory.getEnv().cleanClusterEnvironment();
-    EnvFactory.getEnv().getConfig().getCommonConfig().setWalMode("ASYNC");
+    // EnvFactory.getEnv().getConfig().getCommonConfig().setWalMode("ASYNC");
     EnvFactory.getEnv()
         .getConfig()
         .getCommonConfig()
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
index cfe272225f7..80a0b9656a2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/buffer/WALBuffer.java
@@ -531,8 +531,7 @@ public class WALBuffer extends AbstractWALBuffer {
       this.info = info == null ? new SerializeInfo() : info;
     }
 
-    @Override
-    public void run() {
+    private void runInternal() {
       final long startTime = System.nanoTime();
 
       makeMemTableCheckpoints();
@@ -618,6 +617,15 @@ public class WALBuffer extends AbstractWALBuffer {
       WRITING_METRICS.recordSyncWALBufferCost(System.nanoTime() - startTime, 
forceFlag);
     }
 
+    @Override
+    public void run() {
+      try {
+        runInternal();
+      } catch (Exception e) {
+        logger.warn("Unexpected exception in sync wal buffer task.", e);
+      }
+    }
+
     private void makeMemTableCheckpoints() {
       if (info.checkpoints.isEmpty()) {
         return;
@@ -709,6 +717,7 @@ public class WALBuffer extends AbstractWALBuffer {
     MmapUtil.clean(workingBuffer);
     MmapUtil.clean(syncingBuffer);
     MmapUtil.clean(compressedByteBuffer);
+    logger.info("WAL Buffer {} is closed", this);
   }
 
   private void shutdownThread(ExecutorService thread, ThreadName threadName) {

Reply via email to