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 <r...@streamnative.io> 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);