From 3bec89746619b01bcd4b66d5fe2f2861e5c83593 Mon Sep 17 00:00:00 2001 From: BaiJian Date: Fri, 14 Jan 2022 08:58:22 +0800 Subject: [PATCH] [IOTDB-2381] Fix deadlock caused by incorrect buffer pool size counter (#4797) (#4807) --- .../iotdb/db/engine/storagegroup/StorageGroupProcessor.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java index e44ce601d8b8..53eca34d396b 100755 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java @@ -302,17 +302,16 @@ public ByteBuffer[] getWalDirectByteBuffer() { // if the queue is empty and current size is less than MAX_BYTEBUFFER_NUM // we can construct another two more new byte buffer try { - currentWalPoolSize += 2; res[0] = ByteBuffer.allocateDirect(WAL_BUFFER_SIZE); res[1] = ByteBuffer.allocateDirect(WAL_BUFFER_SIZE); + currentWalPoolSize += 2; } catch (OutOfMemoryError e) { + logger.error("Allocate ByteBuffers error", e); if (res[0] != null) { MmapUtil.clean((MappedByteBuffer) res[0]); - currentWalPoolSize -= 1; } if (res[1] != null) { MmapUtil.clean((MappedByteBuffer) res[1]); - currentWalPoolSize -= 1; } return null; }