IGNITE-5520 - Fixed IgniteChangeGlobalStateFailoverTest
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/85d8c657 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/85d8c657 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/85d8c657 Branch: refs/heads/ignite-2.1 Commit: 85d8c6572d78c7d6796906d92b566e2fa5b116be Parents: ab52671 Author: Dmitriy Govorukhin <dmitriy.govoruk...@gmail.com> Authored: Fri Jul 7 13:13:55 2017 +0300 Committer: Alexey Goncharuk <alexey.goncha...@gmail.com> Committed: Fri Jul 7 13:15:26 2017 +0300 ---------------------------------------------------------------------- .../IgniteChangeGlobalStateFailOverTest.java | 56 +++++++++++++------- 1 file changed, 37 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/85d8c657/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateFailOverTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateFailOverTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateFailOverTest.java index 92d1f21..02a21f4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateFailOverTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateFailOverTest.java @@ -21,11 +21,11 @@ import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.locks.ReentrantReadWriteLock; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCache; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.IgniteInternalFuture; -import org.apache.ignite.internal.util.typedef.internal.U; import static java.lang.Thread.sleep; import static org.apache.ignite.testframework.GridTestUtils.runAsync; @@ -144,8 +144,6 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState * @throws Exception If failed. */ public void testActivateDeActivateOnJoiningNode() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-5520"); - final Ignite igB1 = backUp(0); final Ignite igB2 = backUp(1); final Ignite igB3 = backUp(2); @@ -162,14 +160,17 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState final AtomicBoolean stop = new AtomicBoolean(); - final AtomicBoolean canAct = new AtomicBoolean(true); final AtomicInteger seqIdx = new AtomicInteger(backUpNodes()); + final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock(); + try { final IgniteInternalFuture<Void> af = runAsync(new Callable<Void>() { @Override public Void call() throws Exception { while (!stop.get()) { - if (canAct.get()) { + rwLock.readLock().lock(); + + try { Ignite ig = randomBackUp(false); long start = System.currentTimeMillis(); @@ -182,13 +183,12 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState for (Ignite ign : allBackUpNodes()) assertTrue(ign.active()); - - canAct.set(false); } - else - U.sleep(100); - + finally { + rwLock.readLock().unlock(); + } } + return null; } }); @@ -196,7 +196,9 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState final IgniteInternalFuture<Void> df = runAsync(new Callable<Void>() { @Override public Void call() throws Exception { while (!stop.get()) { - if (!canAct.get()) { + rwLock.writeLock().lock(); + + try { Ignite ig = randomBackUp(false); long start = System.currentTimeMillis(); @@ -209,20 +211,28 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState for (Ignite ign : allBackUpNodes()) assertTrue(!ign.active()); - - canAct.set(true); } - else - U.sleep(100); + finally { + rwLock.writeLock().unlock(); + } } + return null; } }); IgniteInternalFuture<Void> jf1 = runAsync(new Callable<Void>() { @Override public Void call() throws Exception { - while (!stop.get()) - startBackUp(seqIdx.incrementAndGet()); + while (!stop.get()) { + rwLock.readLock().lock(); + + try { + startBackUp(seqIdx.incrementAndGet()); + } + finally { + rwLock.readLock().unlock(); + } + } return null; } @@ -230,8 +240,16 @@ public class IgniteChangeGlobalStateFailOverTest extends IgniteChangeGlobalState IgniteInternalFuture<Void> jf2 = runAsync(new Callable<Void>() { @Override public Void call() throws Exception { - while (!stop.get()) - startBackUp(seqIdx.incrementAndGet()); + while (!stop.get()) { + rwLock.readLock().lock(); + + try { + startBackUp(seqIdx.incrementAndGet()); + } + finally { + rwLock.readLock().unlock(); + } + } return null; }