Repository: ignite
Updated Branches:
  refs/heads/master 2285420cf -> d3566c145


IGNITE-9004 Do not allow to start two Ignite nodes on the same persistence 
folder - Fixes #4383.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d3566c14
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d3566c14
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d3566c14

Branch: refs/heads/master
Commit: d3566c1458443555c7813f55f9a82fa64f083226
Parents: 2285420
Author: Eduard Shangareev <[email protected]>
Authored: Thu Aug 9 15:38:22 2018 +0300
Committer: Alexey Goncharuk <[email protected]>
Committed: Thu Aug 9 15:38:22 2018 +0300

----------------------------------------------------------------------
 .../rest/AbstractRestProcessorSelfTest.java     |   7 ++
 .../cache/GridCacheSharedContext.java           |  19 +---
 .../GridCacheDatabaseSharedManager.java         |  77 ++++++-------
 .../IgniteCacheDatabaseSharedManager.java       |  46 +++-----
 .../filename/PdsConsistentIdProcessor.java      |  13 +--
 .../service/GridServiceProcessor.java           |   4 +-
 .../IgniteClusterActivateDeactivateTest.java    |  22 ++--
 .../IgniteChangeGlobalStateAbstractTest.java    |   4 +-
 .../IgniteChangeGlobalStateTest.java            |   7 --
 .../IgniteNoParrallelClusterIsAllowedTest.java  | 111 +++++++++++++++++++
 .../testsuites/IgniteStandByClusterSuite.java   |  16 +--
 .../development/utils/IgniteWalConverter.java   |  10 +-
 12 files changed, 204 insertions(+), 132 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/AbstractRestProcessorSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/AbstractRestProcessorSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/AbstractRestProcessorSelfTest.java
index 3a8afa4..9781152 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/AbstractRestProcessorSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/AbstractRestProcessorSelfTest.java
@@ -43,6 +43,7 @@ public abstract class AbstractRestProcessorSelfTest extends 
GridCommonAbstractTe
 
     /** {@inheritDoc} */
     @Override protected void beforeTestsStarted() throws Exception {
+        cleanPersistenceDir();
         startGrids(gridCount());
     }
 
@@ -59,6 +60,12 @@ public abstract class AbstractRestProcessorSelfTest extends 
GridCommonAbstractTe
     }
 
     /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+        cleanPersistenceDir();
+    }
+
+    /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
index b195508..381d5bf 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
@@ -246,23 +246,8 @@ public class GridCacheSharedContext<K, V> {
      * @throws IgniteCheckedException If failed.
      */
     public void activate() throws IgniteCheckedException {
-        if (!kernalCtx.clientNode())
-            dbMgr.lock();
-
-        boolean success = false;
-
-        try {
-            for (IgniteChangeGlobalStateSupport mgr : stateAwareMgrs)
-                mgr.onActivate(kernalCtx);
-
-            success = true;
-        }
-        finally {
-            if (!success) {
-                if (!kernalCtx.clientNode())
-                    dbMgr.unLock();
-            }
-        }
+        for (IgniteChangeGlobalStateSupport mgr : stateAwareMgrs)
+            mgr.onActivate(kernalCtx);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
index 1203de8..3e73629 100755
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
@@ -472,14 +472,21 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
             if (!U.mkdirs(cpDir))
                 throw new IgniteCheckedException("Could not create directory 
for checkpoint metadata: " + cpDir);
 
-            cleanupTempCheckpointDirectory();
-
             final FileLockHolder preLocked = kernalCtx.pdsFolderResolver()
-                .resolveFolders()
-                .getLockedFileLockHolder();
+                    .resolveFolders()
+                    .getLockedFileLockHolder();
+
+            fileLockHolder = preLocked == null ?
+                        new FileLockHolder(storeMgr.workDir().getPath(), 
kernalCtx, log) : preLocked;
 
-            if (preLocked == null)
-                fileLockHolder = new 
FileLockHolder(storeMgr.workDir().getPath(), kernalCtx, log);
+            if (log.isDebugEnabled())
+                log.debug("Try to capture file lock [nodeId=" +
+                        cctx.localNodeId() + " path=" + 
fileLockHolder.lockPath() + "]");
+
+            if (!fileLockHolder.isLocked())
+                fileLockHolder.tryLock(lockWaitTime);
+
+            cleanupTempCheckpointDirectory();
 
             persStoreMetrics.wal(cctx.wal());
 
@@ -710,16 +717,10 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
 
         onKernalStop0(false);
 
-        stop0(false);
+        super.onDeActivate(kctx);
 
         /* Must be here, because after deactivate we can invoke activate and 
file lock must be already configured */
         stopping = false;
-
-        if (!cctx.localNode().isClient()) {
-            //we replace lock with new instance (only if we're responsible for 
locking folders)
-            if (fileLockHolder != null)
-                fileLockHolder = new 
FileLockHolder(storeMgr.workDir().getPath(), cctx.kernalContext(), log);
-        }
     }
 
     /**
@@ -958,28 +959,6 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
     }
 
     /** {@inheritDoc} */
-    @Override public void lock() throws IgniteCheckedException {
-        if (fileLockHolder != null) {
-            if (log.isDebugEnabled())
-                log.debug("Try to capture file lock [nodeId=" +
-                    cctx.localNodeId() + " path=" + fileLockHolder.lockPath() 
+ "]");
-
-            fileLockHolder.tryLock(lockWaitTime);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public void unLock() {
-        if (fileLockHolder != null) {
-            if (log.isDebugEnabled())
-                log.debug("Release file lock [nodeId=" +
-                    cctx.localNodeId() + " path=" + fileLockHolder.lockPath() 
+ "]");
-
-            fileLockHolder.release();
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override protected void onKernalStop0(boolean cancel) {
         checkpointLock.writeLock().lock();
 
@@ -996,14 +975,22 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
 
         super.onKernalStop0(cancel);
 
+        unRegistrateMetricsMBean();
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void stop0(boolean cancel) {
+        super.stop0(cancel);
+
         if (!cctx.kernalContext().clientNode()) {
-            unLock();
+            if (fileLockHolder != null) {
+                if (log.isDebugEnabled())
+                    log.debug("Release file lock [nodeId=" +
+                            cctx.localNodeId() + " path=" + 
fileLockHolder.lockPath() + "]");
 
-            if (fileLockHolder != null)
                 fileLockHolder.close();
+            }
         }
-
-        unRegistrateMetricsMBean();
     }
 
     /** */
@@ -4110,7 +4097,7 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
         private RandomAccessFile lockFile;
 
         /** Lock. */
-        private FileLock lock;
+        private volatile FileLock lock;
 
         /** Kernal context to generate Id of locked node in file. */
         @NotNull private GridKernalContext ctx;
@@ -4183,6 +4170,7 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
                 for (int i = 0; i < lockWaitTimeMillis; i += 1000) {
                     try {
                         lock = ch.tryLock(0, 1, false);
+
                         if (lock != null && lock.isValid()) {
                             writeContent(sb.toString());
 
@@ -4253,13 +4241,20 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
             return content;
         }
 
+        /** Locked or not. */
+        public boolean isLocked() {
+            return lock != null && lock.isValid();
+        }
+
         /** Releases file lock */
         public void release() {
             U.releaseQuiet(lock);
         }
 
         /** Closes file channel */
-        public void close() {
+        @Override public void close() {
+            release();
+
             U.closeQuiet(lockFile);
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
index 92de54a..f17e527 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java
@@ -659,21 +659,7 @@ public class IgniteCacheDatabaseSharedManager extends 
GridCacheSharedManagerAdap
 
     /** {@inheritDoc} */
     @Override protected void stop0(boolean cancel) {
-        if (dataRegionMap != null) {
-            for (DataRegion memPlc : dataRegionMap.values()) {
-                memPlc.pageMemory().stop();
-
-                memPlc.evictionTracker().stop();
-
-                unregisterMBean(memPlc.memoryMetrics().getName());
-            }
-
-            dataRegionMap.clear();
-
-            dataRegionMap = null;
-
-            dataRegionsInitialized = false;
-        }
+        onDeActivate(cctx.kernalContext());
     }
 
     /**
@@ -708,20 +694,6 @@ public class IgniteCacheDatabaseSharedManager extends 
GridCacheSharedManagerAdap
     }
 
     /**
-     *
-     */
-    public void lock() throws IgniteCheckedException {
-
-    }
-
-    /**
-     *
-     */
-    public void unLock() {
-
-    }
-
-    /**
      * No-op for non-persistent storage.
      */
     public void checkpointReadLock() {
@@ -1071,7 +1043,21 @@ public class IgniteCacheDatabaseSharedManager extends 
GridCacheSharedManagerAdap
 
     /** {@inheritDoc} */
     @Override public void onDeActivate(GridKernalContext kctx) {
-        stop0(false);
+        if (dataRegionMap != null) {
+            for (DataRegion memPlc : dataRegionMap.values()) {
+                memPlc.pageMemory().stop();
+
+                memPlc.evictionTracker().stop();
+
+                unregisterMBean(memPlc.memoryMetrics().getName());
+            }
+
+            dataRegionMap.clear();
+
+            dataRegionMap = null;
+
+            dataRegionsInitialized = false;
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/PdsConsistentIdProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/PdsConsistentIdProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/PdsConsistentIdProcessor.java
index ba6d822..ffef9af 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/PdsConsistentIdProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/filename/PdsConsistentIdProcessor.java
@@ -211,18 +211,12 @@ public class PdsConsistentIdProcessor extends 
GridProcessorAdapter implements Pd
         }
 
         // was not able to find free slot, allocating new
-        final GridCacheDatabaseSharedManager.FileLockHolder rootDirLock = 
lockRootDirectory(pstStoreBasePath);
-
-        try {
+        try (final GridCacheDatabaseSharedManager.FileLockHolder rootDirLock = 
lockRootDirectory(pstStoreBasePath)) {
             final List<FolderCandidate> sortedCandidates = 
getNodeIndexSortedCandidates(pstStoreBasePath);
             final int nodeIdx = sortedCandidates.isEmpty() ? 0 : 
(sortedCandidates.get(sortedCandidates.size() - 1).nodeIndex() + 1);
 
             return generateAndLockNewDbStorage(pstStoreBasePath, nodeIdx);
         }
-        finally {
-            rootDirLock.release();
-            rootDirLock.close();
-        }
     }
 
     /**
@@ -505,11 +499,10 @@ public class PdsConsistentIdProcessor extends 
GridProcessorAdapter implements Pd
         if (settings != null) {
             final GridCacheDatabaseSharedManager.FileLockHolder fileLockHolder 
= settings.getLockedFileLockHolder();
 
-            if (fileLockHolder != null) {
-                fileLockHolder.release();
+            if (fileLockHolder != null)
                 fileLockHolder.close();
-            }
         }
+
         super.stop(cancel);
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index 949c0c7..9e8c7fa 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -1759,8 +1759,8 @@ public class GridServiceProcessor extends 
GridProcessorAdapter implements Ignite
                         affReadyFut.get();
                     }
                     catch (IgniteCheckedException e) {
-                        U.error(log, "Failed to wait for affinity ready future 
" +
-                            "(the assignment will be recalculated anyway)", e);
+                        U.warn(log, "Failed to wait for affinity ready future 
" +
+                            "(the assignment will be recalculated anyway):" + 
e.toString());
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClusterActivateDeactivateTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClusterActivateDeactivateTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClusterActivateDeactivateTest.java
index 4ff97ba..4be660d 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClusterActivateDeactivateTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClusterActivateDeactivateTest.java
@@ -357,11 +357,13 @@ public class IgniteClusterActivateDeactivateTest extends 
GridCommonAbstractTest
      * @return State change future.
      * @throws Exception If failed.
      */
-    private IgniteInternalFuture<?> startNodesAndBlockStatusChange(int srvs,
+    private IgniteInternalFuture<?> startNodesAndBlockStatusChange(
+        int srvs,
         int clients,
         final int stateChangeFrom,
         final boolean initiallyActive,
-        int... blockMsgNodes) throws Exception {
+        int... blockMsgNodes
+    ) throws Exception {
         active = initiallyActive;
         testSpi = true;
 
@@ -1138,20 +1140,16 @@ public class IgniteClusterActivateDeactivateTest 
extends GridCommonAbstractTest
 
         client = false;
 
-        IgniteInternalFuture startFut1 = GridTestUtils.runAsync(new Callable() 
{
-            @Override public Object call() throws Exception {
-                startGrid(4);
+        IgniteInternalFuture startFut1 = GridTestUtils.runAsync((Callable) () 
-> {
+            startGrid(4);
 
-                return null;
-            }
+            return null;
         }, "start-node1");
 
-        IgniteInternalFuture startFut2 = GridTestUtils.runAsync(new Callable() 
{
-            @Override public Object call() throws Exception {
-                startGrid(5);
+        IgniteInternalFuture startFut2 = GridTestUtils.runAsync((Callable) () 
-> {
+            startGrid(5);
 
-                return null;
-            }
+            return null;
         }, "start-node2");
 
         U.sleep(1000);

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateAbstractTest.java
index 016b6a4..fcbe62f 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateAbstractTest.java
@@ -151,7 +151,7 @@ public abstract class IgniteChangeGlobalStateAbstractTest 
extends GridCommonAbst
      * @param cnt Count.
      * @throws Exception If failed.
      */
-    private void startPrimaryNodes(int cnt) throws Exception {
+    void startPrimaryNodes(int cnt) throws Exception {
         for (int i = 0; i < cnt; i++)
             startPrimary(i);
 
@@ -181,7 +181,7 @@ public abstract class IgniteChangeGlobalStateAbstractTest 
extends GridCommonAbst
      * @param cnt Count.
      * @throws Exception If failed.
      */
-    private void startBackUpNodes(int cnt) throws Exception {
+    void startBackUpNodes(int cnt) throws Exception {
         for (int i = 0; i < cnt; i++)
             startBackUp(i);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
index 70a9251..9152ab9 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteChangeGlobalStateTest.java
@@ -40,13 +40,6 @@ import static 
org.apache.ignite.testframework.GridTestUtils.runAsync;
  *
  */
 public class IgniteChangeGlobalStateTest extends 
IgniteChangeGlobalStateAbstractTest {
-    /** {@inheritDoc} */
-    @Override protected void beforeTest() throws Exception {
-        fail("https://issues.apache.org/jira/browse/IGNITE-9004";);
-
-        super.beforeTest();
-    }
-
     /**
      * @throws Exception if fail.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteNoParrallelClusterIsAllowedTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteNoParrallelClusterIsAllowedTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteNoParrallelClusterIsAllowedTest.java
new file mode 100644
index 0000000..5c986ee
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/standbycluster/IgniteNoParrallelClusterIsAllowedTest.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.persistence.standbycluster;
+
+import junit.framework.AssertionFailedError;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+
+/**
+ *
+ */
+public class IgniteNoParrallelClusterIsAllowedTest extends 
IgniteChangeGlobalStateAbstractTest {
+    /** */
+    private static final TcpDiscoveryIpFinder vmIpFinder = new 
TcpDiscoveryVmIpFinder(true);
+
+    /**
+     * @throws Exception if failed.
+     */
+    public void testSimple() throws Exception {
+        startPrimaryNodes(primaryNodes());
+
+        tryToStartBackupClusterWhatShouldFail();
+
+        primary(0).cluster().active(true);
+
+        tryToStartBackupClusterWhatShouldFail();
+
+        primary(0).cluster().active(false);
+
+        tryToStartBackupClusterWhatShouldFail();
+
+        primary(0).cluster().active(true);
+
+        tryToStartBackupClusterWhatShouldFail();
+
+        stopAllPrimary();
+
+        startBackUp(backUpNodes());
+
+        stopAllBackUp();
+
+        startPrimaryNodes(primaryNodes());
+
+        tryToStartBackupClusterWhatShouldFail();
+    }
+
+    /**
+     *
+     */
+    private void tryToStartBackupClusterWhatShouldFail() {
+        try {
+            startBackUpNodes(backUpNodes());
+
+            fail();
+        }
+        catch (AssertionFailedError er) {
+                throw er;
+        }
+        catch (Throwable e) {
+            while (true) {
+                String message = e.getMessage();
+
+                if (message.contains("Failed to acquire file lock during"))
+                    break;
+
+                if (e.getCause() != null)
+                    e = e.getCause();
+                else
+                    fail();
+            }
+        }
+    }
+
+    /**
+     *
+     */
+    @Override protected void beforeTest() throws Exception {
+        stopAllGrids();
+
+        U.delete(U.resolveWorkDirectory(U.defaultWorkDirectory(), testName(), 
true));
+
+        cleanPersistenceDir();
+    }
+
+    /**
+     *
+     */
+    @Override protected void afterTest() throws Exception {
+        stopAllGrids();
+
+        cleanPersistenceDir();
+
+        U.delete(U.resolveWorkDirectory(U.defaultWorkDirectory(), testName(), 
true));
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteStandByClusterSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteStandByClusterSuite.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteStandByClusterSuite.java
index fd124b7..f524420 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteStandByClusterSuite.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteStandByClusterSuite.java
@@ -21,12 +21,9 @@ import junit.framework.TestSuite;
 import 
org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.CacheBaselineTopologyTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.IgniteBaselineAffinityTopologyActivationTest;
-import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateCacheTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateDataStreamerTest;
-import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateDataStructureTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateFailOverTest;
-import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateServiceTest;
-import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteChangeGlobalStateTest;
+import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteNoParrallelClusterIsAllowedTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.IgniteStandByClusterTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.join.JoinActiveNodeToActiveCluster;
 import 
org.apache.ignite.internal.processors.cache.persistence.standbycluster.join.JoinActiveNodeToInActiveCluster;
@@ -65,12 +62,15 @@ public class IgniteStandByClusterSuite extends TestSuite {
         
suite.addTestSuite(JoinInActiveNodeToActiveClusterWithPersistence.class);
         
suite.addTestSuite(JoinInActiveNodeToInActiveClusterWithPersistence.class);
 
-        suite.addTestSuite(IgniteChangeGlobalStateTest.class);
-        suite.addTestSuite(IgniteChangeGlobalStateCacheTest.class);
-        suite.addTestSuite(IgniteChangeGlobalStateDataStructureTest.class);
+//TODO https://issues.apache.org/jira/browse/IGNITE-9081 
suite.addTestSuite(IgniteChangeGlobalStateTest.class);
+//TODO https://issues.apache.org/jira/browse/IGNITE-9081 
suite.addTestSuite(IgniteChangeGlobalStateCacheTest.class);
+//TODO https://issues.apache.org/jira/browse/IGNITE-9081 
suite.addTestSuite(IgniteChangeGlobalStateDataStructureTest.class);
+//TODO https://issues.apache.org/jira/browse/IGNITE-9081 
suite.addTestSuite(IgniteChangeGlobalStateServiceTest.class);
+
         suite.addTestSuite(IgniteChangeGlobalStateDataStreamerTest.class);
         suite.addTestSuite(IgniteChangeGlobalStateFailOverTest.class);
-        suite.addTestSuite(IgniteChangeGlobalStateServiceTest.class);
+
+        suite.addTestSuite(IgniteNoParrallelClusterIsAllowedTest.class);
 
         suite.addTestSuite(CacheBaselineTopologyTest.class);
         suite.addTestSuite(IgniteBaselineAffinityTopologyActivationTest.class);

http://git-wip-us.apache.org/repos/asf/ignite/blob/d3566c14/modules/dev-utils/src/main/java/org/apache/ignite/development/utils/IgniteWalConverter.java
----------------------------------------------------------------------
diff --git 
a/modules/dev-utils/src/main/java/org/apache/ignite/development/utils/IgniteWalConverter.java
 
b/modules/dev-utils/src/main/java/org/apache/ignite/development/utils/IgniteWalConverter.java
index eee193a..21a0c61 100644
--- 
a/modules/dev-utils/src/main/java/org/apache/ignite/development/utils/IgniteWalConverter.java
+++ 
b/modules/dev-utils/src/main/java/org/apache/ignite/development/utils/IgniteWalConverter.java
@@ -51,8 +51,8 @@ public class IgniteWalConverter {
         H2ExtrasInnerIO.register();
         H2ExtrasLeafIO.register();
 
-        boolean printRecords = 
IgniteSystemProperties.getBoolean("PRINT_RECORDS", false);
-        boolean printStat = IgniteSystemProperties.getBoolean("PRINT_STAT", 
true);
+        boolean printRecords = 
IgniteSystemProperties.getBoolean("PRINT_RECORDS", false); //TODO read them 
from argumetns
+        boolean printStat = IgniteSystemProperties.getBoolean("PRINT_STAT", 
true); //TODO read them from argumetns
 
         final IgniteWalIteratorFactory factory = new 
IgniteWalIteratorFactory(new NullLogger());
 
@@ -65,7 +65,11 @@ public class IgniteWalConverter {
 
         @Nullable final WalStat stat = printStat ? new WalStat() : null;
 
-        try (WALIterator stIt = factory.iterator(workFiles)) {
+        IgniteWalIteratorFactory.IteratorParametersBuilder 
iteratorParametersBuilder =
+                new 
IgniteWalIteratorFactory.IteratorParametersBuilder().filesOrDirs(workFiles)
+                    .pageSize(Integer.parseInt(args[0]));
+
+        try (WALIterator stIt = factory.iterator(iteratorParametersBuilder)) {
             while (stIt.hasNextX()) {
                 IgniteBiTuple<WALPointer, WALRecord> next = stIt.nextX();
 

Reply via email to