You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/12/21 01:33:45 UTC
[pulsar] 09/18: Fix wrong isEmpty method of ConcurrentOpenLongPairRangeSet (#12953)
This is an automated email from the ASF dual-hosted git repository.
penghui pushed a commit to branch branch-2.9
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 8113c17ff68cad0f0ffa48fd2f31383699d3b355
Author: Yunze Xu <xy...@163.com>
AuthorDate: Thu Nov 25 10:29:41 2021 +0800
Fix wrong isEmpty method of ConcurrentOpenLongPairRangeSet (#12953)
(cherry picked from commit 6cc5cff0f051cf50c84edb4bb67034cb978d3646)
---
.../util/collections/ConcurrentOpenLongPairRangeSet.java | 12 +++++-------
.../collections/ConcurrentOpenLongPairRangeSetTest.java | 13 +++++++++++++
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSet.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSet.java
index 174f318..7ae6c7e 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSet.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSet.java
@@ -152,14 +152,12 @@ public class ConcurrentOpenLongPairRangeSet<T extends Comparable<T>> implements
if (rangeBitSetMap.isEmpty()) {
return true;
}
- AtomicBoolean isEmpty = new AtomicBoolean(false);
- rangeBitSetMap.forEach((key, val) -> {
- if (!isEmpty.get()) {
- return;
+ for (BitSet rangeBitSet : rangeBitSetMap.values()) {
+ if (!rangeBitSet.isEmpty()) {
+ return false;
}
- isEmpty.set(val.isEmpty());
- });
- return isEmpty.get();
+ }
+ return true;
}
@Override
diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSetTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSetTest.java
index f57b75d..90c23ae 100644
--- a/pulsar-common/src/test/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSetTest.java
+++ b/pulsar-common/src/test/java/org/apache/pulsar/common/util/collections/ConcurrentOpenLongPairRangeSetTest.java
@@ -19,7 +19,9 @@
package org.apache.pulsar.common.util.collections;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
import java.util.List;
import java.util.Set;
@@ -38,6 +40,17 @@ public class ConcurrentOpenLongPairRangeSetTest {
static final LongPairConsumer<LongPair> consumer = (key, value) -> new LongPair(key, value);
@Test
+ public void testIsEmpty() {
+ ConcurrentOpenLongPairRangeSet<LongPair> set = new ConcurrentOpenLongPairRangeSet<>(consumer);
+ assertTrue(set.isEmpty());
+ // lowerValueOpen and upperValue are both -1 so that an empty set will be added
+ set.addOpenClosed(0, -1, 0, -1);
+ assertTrue(set.isEmpty());
+ set.addOpenClosed(1, 1, 1, 5);
+ assertFalse(set.isEmpty());
+ }
+
+ @Test
public void testAddForSameKey() {
ConcurrentOpenLongPairRangeSet<LongPair> set = new ConcurrentOpenLongPairRangeSet<>(consumer);
// add 0 to 5