This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 587031e6ddf [fix][broker]Incorrect backlog that is larger than
expected (#25037)
587031e6ddf is described below
commit 587031e6ddf94a586399cadb03dad5e999a82daf
Author: fengyubiao <[email protected]>
AuthorDate: Fri Dec 5 04:30:21 2025 +0800
[fix][broker]Incorrect backlog that is larger than expected (#25037)
---
.../org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java | 9 +++++----
.../org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java | 10 ++++++----
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
index eb023f4c2df..0bd5659f45c 100644
---
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
+++
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
@@ -3803,6 +3803,7 @@ public class ManagedLedgerImpl implements ManagedLedger,
CreateCallback {
// than the LAC.
// To support this case, use "Long.MAX_VALUE" if the ledger is the
last one.
long entriesInLedger = comparePositions(toPosition,
lastConfirmedEntry) >= 0
+ || toPosition.getLedgerId() ==
lastConfirmedEntry.getLedgerId()
? Long.MAX_VALUE : toLedger.getEntries();
count += Math.min(toPosition.getEntryId(), entriesInLedger - 1);
count += toIncluded ? 1 : 0;
@@ -3811,12 +3812,12 @@ public class ManagedLedgerImpl implements
ManagedLedger, CreateCallback {
// 2. Add the entries in the ledger pointed by fromPosition.
// Add nothing if "toPosition.entryId < 0".
// Add nothing if "toPosition" does not exit in "ledgers".
- LedgerInfo formLedger = ledgers.get(fromPosition.getLedgerId());
- if (formLedger != null) {
+ LedgerInfo fromLedger = ledgers.get(fromPosition.getLedgerId());
+ if (fromLedger != null) {
if (fromPosition.getEntryId() < 0) {
- count += formLedger.getEntries();
+ count += fromLedger.getEntries();
} else {
- count += formLedger.getEntries() - (fromPosition.getEntryId()
+ 1);
+ count += fromLedger.getEntries() - (fromPosition.getEntryId()
+ 1);
count += fromIncluded ? 1 : 0;
}
}
diff --git
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
index 3be3e6af61a..1d557ef1f28 100644
---
a/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
+++
b/managed-ledger/src/test/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerTest.java
@@ -4682,13 +4682,15 @@ public class ManagedLedgerTest extends
MockedBookKeeperTestCase {
assertEquals(ml.getNumberOfEntries(range26), 29);
// Normal case: end with current ledger.
- Range<Position> range27 = Range.closed(positions.get(0),
positions.get(34));
- assertEquals(ml.getNumberOfEntries(range27), 35);
+ Range<Position> range27 = Range.closed(positions.get(0),
positions.get(31));
+ assertEquals(ml.getNumberOfEntries(range27), 32);
+ Range<Position> range28 = Range.closed(positions.get(0),
positions.get(34));
+ assertEquals(ml.getNumberOfEntries(range28), 35);
// Cover the following case.
// The use case "cursor.getNumberOfEntries()", which will use a
"toPosition" that with an entry
// id that is larger than the LAC.
- Range<Position> range28 = Range.closed(positions.get(0),
PositionFactory.create(ledger4.getLedgerId(), 100));
- assertEquals(ml.getNumberOfEntries(range28), 131);
+ Range<Position> range29 = Range.closed(positions.get(0),
PositionFactory.create(ledger4.getLedgerId(), 100));
+ assertEquals(ml.getNumberOfEntries(range29), 131);
// From position that entry id is "-1" & positions in the same ledger.
Range<Position> range31 =
Range.closed(PositionFactory.create(ledger1.getLedgerId(), -1),