From 472d3541812420a3912dfd9ae0f71d5385c06a03 Mon Sep 17 00:00:00 2001 From: Haoning-Sun Date: Tue, 11 Jul 2023 17:04:11 +0800 Subject: [PATCH 1/2] Fix memory leaking when loading data --- .../src/main/java/alluxio/worker/block/MonoBlockStore.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java b/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java index 5f18e4cac897..a4e45e535193 100644 --- a/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java +++ b/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java @@ -345,14 +345,14 @@ public CompletableFuture> load(List blocks, UfsReadOpti .thenRun(() -> { try { blockWriter.close(); + NioDirectBufferPool.release(buf); } catch (IOException e) { throw AlluxioRuntimeException.from(e); - } finally { - NioDirectBufferPool.release(buf); } }) .thenRun(() -> commitBlock(sessionId, blockId, false)) .exceptionally(t -> { + NioDirectBufferPool.release(buf); handleException(t.getCause(), block, errors, sessionId); return null; }); From 4ebb08873a0a7e3ba957b05c0a3453397269a077 Mon Sep 17 00:00:00 2001 From: Haoning-Sun Date: Thu, 13 Jul 2023 09:03:06 +0800 Subject: [PATCH 2/2] Release buffer after commit block --- .../src/main/java/alluxio/worker/block/MonoBlockStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java b/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java index a4e45e535193..1e6e2c32b799 100644 --- a/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java +++ b/core/server/worker/src/main/java/alluxio/worker/block/MonoBlockStore.java @@ -345,12 +345,12 @@ public CompletableFuture> load(List blocks, UfsReadOpti .thenRun(() -> { try { blockWriter.close(); - NioDirectBufferPool.release(buf); } catch (IOException e) { throw AlluxioRuntimeException.from(e); } }) .thenRun(() -> commitBlock(sessionId, blockId, false)) + .thenRun(() -> NioDirectBufferPool.release(buf)) .exceptionally(t -> { NioDirectBufferPool.release(buf); handleException(t.getCause(), block, errors, sessionId);