add catch in WAL-sync thread
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 fad08f0..4af52b7 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 @@ @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 @@ @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 cfe2722..80a0b96 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 @@ this.info = info == null ? new SerializeInfo() : info; } - @Override - public void run() { + private void runInternal() { final long startTime = System.nanoTime(); makeMemTableCheckpoints(); @@ -618,6 +617,15 @@ 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 @@ MmapUtil.clean(workingBuffer); MmapUtil.clean(syncingBuffer); MmapUtil.clean(compressedByteBuffer); + logger.info("WAL Buffer {} is closed", this); } private void shutdownThread(ExecutorService thread, ThreadName threadName) {