This is an automated email from the ASF dual-hosted git repository.
bogong pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.9 by this push:
new 98309d4dc09 [fix][broker] In the trimDeletedEntries method, release
the removed entry (#18305)
98309d4dc09 is described below
commit 98309d4dc09ddcb145acf33b2ca01aaaa9454883
Author: LinChen <[email protected]>
AuthorDate: Thu Nov 3 20:51:18 2022 +0800
[fix][broker] In the trimDeletedEntries method, release the removed entry
(#18305)
(cherry picked from commit 79a3f850c560bc2a8e27940c81ce5b492bf8f2c8)
---
.../org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 10 ++++++++--
.../org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java | 5 +++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java
index 8deb70c6a19..e31d4eff887 100644
---
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java
+++
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java
@@ -3105,8 +3105,14 @@ public class ManagedCursorImpl implements ManagedCursor {
@Override
public void trimDeletedEntries(List<Entry> entries) {
- entries.removeIf(entry -> ((PositionImpl)
entry.getPosition()).compareTo(markDeletePosition) <= 0
- || individualDeletedMessages.contains(entry.getLedgerId(),
entry.getEntryId()));
+ entries.removeIf(entry -> {
+ boolean isDeleted = ((PositionImpl)
entry.getPosition()).compareTo(markDeletePosition) <= 0
+ || individualDeletedMessages.contains(entry.getLedgerId(),
entry.getEntryId());
+ if (isDeleted) {
+ entry.release();
+ }
+ return isDeleted;
+ });
}
private ManagedCursorImpl cursorImpl() {
diff --git
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
index 5f1ed11836b..4c469c19893 100644
---
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
+++
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java
@@ -2539,6 +2539,11 @@ public class ManagedCursorTest extends
MockedBookKeeperTestCase {
assertEquals(entries.size(), 1);
assertEquals(entries.get(0).getPosition(),
PositionImpl.get(markDeletedPosition.getLedgerId() ,
markDeletedPosition.getEntryId() + 7));
+
+ assertEquals(entry1.refCnt(), 0);
+ assertEquals(entry2.refCnt(), 0);
+ assertEquals(entry3.refCnt(), 0);
+ assertEquals(entry4.refCnt(), 0);
}
@Test(timeOut = 20000)