From 5f020d4473c29f476c5e302b5d7a882af2b5e984 Mon Sep 17 00:00:00 2001 From: horizonzy Date: Thu, 10 Oct 2024 19:15:30 +0800 Subject: [PATCH] Fix check read failed entry memory leak issue. --- .../org/apache/bookkeeper/replication/ReplicationWorker.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java index c32487a30bc..2d494ffe8ea 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/ReplicationWorker.java @@ -61,6 +61,7 @@ import org.apache.bookkeeper.client.BookKeeperAdmin; import org.apache.bookkeeper.client.EnsemblePlacementPolicy; import org.apache.bookkeeper.client.LedgerChecker; +import org.apache.bookkeeper.client.LedgerEntry; import org.apache.bookkeeper.client.LedgerFragment; import org.apache.bookkeeper.client.LedgerHandle; import org.apache.bookkeeper.client.api.LedgerMetadata; @@ -351,6 +352,8 @@ private boolean tryReadingFaultyEntries(LedgerHandle lh, LedgerFragment ledgerFr lh.asyncReadEntries(entryIdToRead, entryIdToRead, (rc, ledHan, seq, ctx) -> { long thisEntryId = (Long) ctx; if (rc == BKException.Code.OK) { + LedgerEntry entry = seq.nextElement(); + entry.getEntryBuffer().release(); entriesUnableToReadForThisLedger.remove(thisEntryId); if (numOfResponsesToWaitFor.decrementAndGet() == 0) { multiReadComplete.countDown();