Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Descriptions of the changes in this PR:
Motivation
Optimize
Iterable<Long> getActiveLedgersInRange(0, Long.MAX_VALUE)
by avoid applying the filter predicate when traverse theIterable<Long>
.There are many places call
getActiveLedgersInRange(0, Long.MAX_VALUE)
to get theIterable
of all theledgerId
, for example:bookkeeper/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java
Lines 124 to 125 in 147b5bf
bookkeeper/bookkeeper-server/src/main/java/org/apache/bookkeeper/tools/cli/commands/bookie/ConvertToDBStorageCommand.java
Line 88 in 147b5bf
bookkeeper/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LocationsIndexRebuildOp.java
Line 160 in 147b5bf
We could return the keys of
ledgers
directly to avoid applying the filter predicate when traverse theIterable<Long>
Changes
Return the keys of
ledgers
directly iffirstLedgerId <=0 && lastLedgerId == Long.MAX_VALUE