This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.3 by this push:
     new c9471c642a9 [fix][misc] Remove RoaringBitmap dependency from 
pulsar-common (#23008)
c9471c642a9 is described below

commit c9471c642a9d99efea5eadc54c10118d68d0d431
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)
    
    (cherry picked from commit 32e29a3d45c2de5560e22201b0b4bfd5409f12f2)
---
 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 5421257a268..33c7f1b0e2f 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 f867dcefd02..500fe3a6887 100644
--- a/managed-ledger/pom.xml
+++ b/managed-ledger/pom.xml
@@ -104,6 +104,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 bfc0e0ac78f..1b57803a730 100644
--- a/pulsar-common/pom.xml
+++ b/pulsar-common/pom.xml
@@ -243,11 +243,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();
     }
 
 }

Reply via email to