This is an automated email from the ASF dual-hosted git repository. lhotari pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push: new 32e29a3d45c [fix][misc] Remove RoaringBitmap dependency from pulsar-common (#23008) 32e29a3d45c is described below commit 32e29a3d45c2de5560e22201b0b4bfd5409f12f2 Author: Lari Hotari <lhot...@users.noreply.github.com> AuthorDate: Mon Jul 8 13:55:56 2024 +0300 [fix][misc] Remove RoaringBitmap dependency from pulsar-common (#23008) --- distribution/shell/src/assemble/LICENSE.bin.txt | 2 -- managed-ledger/pom.xml | 4 ++++ .../org/apache/bookkeeper/mledger/impl/RangeSetWrapper.java | 3 ++- pulsar-common/pom.xml | 5 ----- .../pulsar/common/util/collections/OpenLongPairRangeSet.java | 10 ++++++++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/distribution/shell/src/assemble/LICENSE.bin.txt b/distribution/shell/src/assemble/LICENSE.bin.txt index 261fef74a10..0da56c6afa8 100644 --- a/distribution/shell/src/assemble/LICENSE.bin.txt +++ b/distribution/shell/src/assemble/LICENSE.bin.txt @@ -382,8 +382,6 @@ The Apache Software License, Version 2.0 - simpleclient_tracer_common-0.16.0.jar - simpleclient_tracer_otel-0.16.0.jar - simpleclient_tracer_otel_agent-0.16.0.jar - * RoaringBitmap - - RoaringBitmap-1.2.0.jar * Log4J - log4j-api-2.23.1.jar - log4j-core-2.23.1.jar diff --git a/managed-ledger/pom.xml b/managed-ledger/pom.xml index 60a4edab95b..fac39103c49 100644 --- a/managed-ledger/pom.xml +++ b/managed-ledger/pom.xml @@ -109,6 +109,10 @@ </exclusion> </exclusions> </dependency> + <dependency> + <groupId>org.roaringbitmap</groupId> + <artifactId>RoaringBitmap</artifactId> + </dependency> <dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/RangeSetWrapper.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/RangeSetWrapper.java index c193d71c64f..a55e6444b2f 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/RangeSetWrapper.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/RangeSetWrapper.java @@ -27,6 +27,7 @@ import java.util.List; import org.apache.bookkeeper.mledger.ManagedLedgerConfig; import org.apache.pulsar.common.util.collections.LongPairRangeSet; import org.apache.pulsar.common.util.collections.OpenLongPairRangeSet; +import org.roaringbitmap.RoaringBitSet; /** * Wraps other Range classes, and adds LRU, marking dirty data and other features on this basis. @@ -55,7 +56,7 @@ public class RangeSetWrapper<T extends Comparable<T>> implements LongPairRangeSe this.config = managedCursor.getManagedLedger().getConfig(); this.rangeConverter = rangeConverter; this.rangeSet = config.isUnackedRangesOpenCacheSetEnabled() - ? new OpenLongPairRangeSet<>(rangeConverter) + ? new OpenLongPairRangeSet<>(rangeConverter, RoaringBitSet::new) : new LongPairRangeSet.DefaultRangeSet<>(rangeConverter, rangeBoundConsumer); this.enableMultiEntry = config.isPersistentUnackedRangesWithMultipleEntriesEnabled(); } diff --git a/pulsar-common/pom.xml b/pulsar-common/pom.xml index 3f73a43698e..aa7e4998e5c 100644 --- a/pulsar-common/pom.xml +++ b/pulsar-common/pom.xml @@ -252,11 +252,6 @@ <artifactId>awaitility</artifactId> <scope>test</scope> </dependency> - - <dependency> - <groupId>org.roaringbitmap</groupId> - <artifactId>RoaringBitmap</artifactId> - </dependency> </dependencies> <build> diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/OpenLongPairRangeSet.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/OpenLongPairRangeSet.java index 5114675324a..6df6d414871 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/OpenLongPairRangeSet.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/OpenLongPairRangeSet.java @@ -28,9 +28,9 @@ import java.util.Map.Entry; import java.util.NavigableMap; import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.function.Supplier; import javax.annotation.concurrent.NotThreadSafe; import org.apache.commons.lang.mutable.MutableInt; -import org.roaringbitmap.RoaringBitSet; /** * A Concurrent set comprising zero or more ranges of type {@link LongPair}. This can be alternative of @@ -48,6 +48,7 @@ public class OpenLongPairRangeSet<T extends Comparable<T>> implements LongPairRa protected final NavigableMap<Long, BitSet> rangeBitSetMap = new ConcurrentSkipListMap<>(); private final LongPairConsumer<T> consumer; + private final Supplier<BitSet> bitSetSupplier; // caching place-holder for cpu-optimization to avoid calculating ranges again private volatile int cachedSize = 0; @@ -56,7 +57,12 @@ public class OpenLongPairRangeSet<T extends Comparable<T>> implements LongPairRa private volatile boolean updatedAfterCachedForToString = true; public OpenLongPairRangeSet(LongPairConsumer<T> consumer) { + this(consumer, BitSet::new); + } + + public OpenLongPairRangeSet(LongPairConsumer<T> consumer, Supplier<BitSet> bitSetSupplier) { this.consumer = consumer; + this.bitSetSupplier = bitSetSupplier; } /** @@ -405,7 +411,7 @@ public class OpenLongPairRangeSet<T extends Comparable<T>> implements LongPairRa } private BitSet createNewBitSet() { - return new RoaringBitSet(); + return bitSetSupplier.get(); } }