This is an automated email from the ASF dual-hosted git repository.
rgao 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 23fca3d6bd7 [fix] Avoid negative estimated entry count (#24055)
23fca3d6bd7 is described below
commit 23fca3d6bd72cefddb5db6587d8bee02cd87a225
Author: ran <[email protected]>
AuthorDate: Fri Mar 7 12:58:34 2025 +0800
[fix] Avoid negative estimated entry count (#24055)
(cherry picked from commit 49f623619fe30eb16b749e6cbebe2812d0a1bcea)
---
.../org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 8 +++++---
.../org/apache/bookkeeper/mledger/impl/ManagedCursorTest.java | 10 ++++++++++
2 files changed, 15 insertions(+), 3 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 32d46ff1c3c..c05fd490824 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
@@ -3811,9 +3811,11 @@ public class ManagedCursorImpl implements ManagedCursor {
if (maxSizeBytes == NO_MAX_SIZE_LIMIT) {
return maxEntries;
}
- int maxEntriesBasedOnSize =
- Long.valueOf(estimateEntryCountBySize(maxSizeBytes,
readPosition, ledger)).intValue();
- return Math.min(maxEntriesBasedOnSize, maxEntries);
+ long estimatedEntryCount = estimateEntryCountBySize(maxSizeBytes,
readPosition, ledger);
+ if (estimatedEntryCount > Integer.MAX_VALUE) {
+ return maxEntries;
+ }
+ return Math.min((int) estimatedEntryCount, maxEntries);
}
static long estimateEntryCountBySize(long bytesSize, Position
readPosition, ManagedLedgerImpl ml) {
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 1cb09d99539..90a5dadbef0 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
@@ -5246,6 +5246,16 @@ public class ManagedCursorTest extends
MockedBookKeeperTestCase {
ml.delete();
}
+ @Test
+ public void testApplyMaxSizeCap() throws Exception {
+ var ml = factory.open("testApplyMaxSizeCap");
+ var cursor = ml.openCursor("c1");
+ ml.addEntry(new byte[1000]);
+ assertEquals(cursor.applyMaxSizeCap(200, Long.MAX_VALUE), 200);
+ ml.deleteCursor("c1");
+ ml.delete();
+ }
+
@Test
void testForceCursorRecovery() throws Exception {
TestPulsarMockBookKeeper bk = new TestPulsarMockBookKeeper(executor);