From 6b3290ead595deb7b132e914c5b34a36cdf0bf4f Mon Sep 17 00:00:00 2001 From: fanjianye Date: Tue, 26 Aug 2025 14:51:50 +0800 Subject: [PATCH] fix replicateRate of batchRead in auto-recover is negative --- .../apache/bookkeeper/client/LedgerFragmentReplicator.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java index 3f4f74b0352..0357dfa35b1 100644 --- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java +++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/LedgerFragmentReplicator.java @@ -471,8 +471,9 @@ void batchRecoverLedgerFragmentEntry(final long startEntryId, int entriesToReplicateCnt = (int) (endEntryId - startEntryId + 1); int maxBytesToReplicate = conf.getReplicationRateByBytes(); if (replicationThrottle != null) { - if (maxBytesToReplicate != -1 && maxBytesToReplicate > averageEntrySize.get() * entriesToReplicateCnt) { - maxBytesToReplicate = averageEntrySize.get() * entriesToReplicateCnt; + long bytesToReplicateCnt = (long) averageEntrySize.get() * entriesToReplicateCnt; + if (bytesToReplicateCnt <= Integer.MAX_VALUE && bytesToReplicateCnt >= 0) { + maxBytesToReplicate = Math.min(maxBytesToReplicate, (int) bytesToReplicateCnt); } replicationThrottle.acquire(maxBytesToReplicate); }