You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/06/20 15:36:58 UTC

[bookkeeper] branch master updated: LedgerManagerIteratorTest: avoid ledger collision

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

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 28dee84  LedgerManagerIteratorTest: avoid ledger collision
28dee84 is described below

commit 28dee8464764b0edceeb31ce24424f0947b5789b
Author: Samuel Just <sj...@salesforce.com>
AuthorDate: Wed Jun 20 08:36:51 2018 -0700

    LedgerManagerIteratorTest: avoid ledger collision
    
    For the non-LHLM managers, the ledger space seems to be small enough to
    allow collisions to occasionally cause a test failure.  Remember
    created ledgers to avoid collisions.
    
    (bug W-5104859)
    Signed-off-by: Samuel Just <sjustsalesforce.com>
    
    Author: Samuel Just <sj...@salesforce.com>
    
    Reviewers: Charan Reddy Guttapalem <re...@gmail.com>, Sijie Guo <si...@apache.org>
    
    This closes #1526 from athanatos/forupstream/wip-ledger-manager-iterator-test
---
 .../java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java    | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
index 97a0ab7..1bd32c5 100644
--- a/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
+++ b/bookkeeper-server/src/test/java/org/apache/bookkeeper/meta/LedgerManagerIteratorTest.java
@@ -52,6 +52,7 @@ import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GenericCallback;
 import org.apache.bookkeeper.util.MathUtils;
 import org.apache.bookkeeper.util.ZkUtils;
 import org.apache.bookkeeper.versioning.Version;
+import org.apache.mina.util.ConcurrentHashSet;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.ZooDefs;
 import org.junit.After;
@@ -414,6 +415,7 @@ public class LedgerManagerIteratorTest extends LedgerManagerTestCase {
         final long start = MathUtils.nowInNano();
         final CountDownLatch latch = new CountDownLatch(1);
         ArrayList<Thread> threads = new ArrayList<>();
+        final ConcurrentHashSet<Long> createdLedgers = new ConcurrentHashSet<>();
         for (int i = 0; i < numWriters; ++i) {
             Thread thread = new Thread(safeWrapper(() -> {
                 LedgerManager writerLM = getIndependentLedgerManager();
@@ -431,7 +433,7 @@ public class LedgerManagerIteratorTest extends LedgerManagerTestCase {
                         if (!longRange) {
                             candidate %= 1000000;
                         }
-                    } while (mustExist.contains(candidate));
+                    } while (mustExist.contains(candidate) || !createdLedgers.add(candidate));
                     try {
                         createLedger(writerLM, candidate, Optional.empty());
                         removeLedger(writerLM, candidate, Optional.empty());