IGNITE-45 - Fixed stop procedure.

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

Branch: refs/heads/ignite-45
Commit: 8fd3104456349f956a73495d16fdc73f5d3044b1
Parents: 384e545
Author: Alexey Goncharuk <agoncha...@gridgain.com>
Authored: Tue Mar 17 19:10:14 2015 -0700
Committer: Alexey Goncharuk <agoncha...@gridgain.com>
Committed: Tue Mar 17 19:10:14 2015 -0700

----------------------------------------------------------------------
 .../processors/cache/GridCacheProcessor.java    | 10 +++++-
 .../ignite/internal/util/worker/GridWorker.java | 12 --------
 ...eJdbcStoreAbstractMultithreadedSelfTest.java | 13 ++++++--
 .../cache/GridCacheAlwaysEvictionPolicy.java    | 14 ++++++++-
 .../IgniteTxStoreExceptionAbstractSelfTest.java | 16 +++++++---
 .../GridCacheAtomicTimeoutSelfTest.java         |  2 ++
 ...ePartitionedBasicStoreMultiNodeSelfTest.java |  4 +--
 .../ignite/testframework/GridTestUtils.java     |  7 +++++
 .../testframework/junits/GridAbstractTest.java  | 32 +++++++++++++++++++-
 9 files changed, 86 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 3530ac7..7c44529 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -752,12 +752,15 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
             return;
 
         for (String cacheName : stopSeq) {
-            GridCacheAdapter<?, ?> cache = caches.get(maskNull(cacheName));
+            GridCacheAdapter<?, ?> cache = caches.remove(maskNull(cacheName));
 
             if (cache != null)
                 stopCache(cache, cancel);
         }
 
+        for (GridCacheAdapter<?, ?> cache : caches.values())
+            stopCache(cache, cancel);
+
         List<? extends GridCacheSharedManager<?, ?>> mgrs = 
sharedCtx.managers();
 
         for (ListIterator<? extends GridCacheSharedManager<?, ?>> it = 
mgrs.listIterator(mgrs.size()); it.hasPrevious();) {
@@ -785,6 +788,11 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 onKernalStop(cache, cancel);
         }
 
+        for (Map.Entry<String, GridCacheAdapter<?, ?>> entry : 
caches.entrySet()) {
+            if (!stopSeq.contains(entry.getKey()))
+                onKernalStop(entry.getValue(), cancel);
+        }
+
         List<? extends GridCacheSharedManager<?, ?>> sharedMgrs = 
sharedCtx.managers();
 
         for (ListIterator<? extends GridCacheSharedManager<?, ?>> it = 
sharedMgrs.listIterator(sharedMgrs.size());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
index 4319b61..0cda53d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
@@ -50,9 +50,6 @@ public abstract class GridWorker implements Runnable {
     /** Actual thread runner. */
     private volatile Thread runner;
 
-    /** Parent thread. */
-    private final Thread parent;
-
     /** */
     private final Object mux = new Object();
 
@@ -70,8 +67,6 @@ public abstract class GridWorker implements Runnable {
         assert name != null;
         assert log != null;
 
-        parent = Thread.currentThread();
-
         this.gridName = gridName;
         this.name = name;
         this.lsnr = lsnr;
@@ -179,13 +174,6 @@ public abstract class GridWorker implements Runnable {
     }
 
     /**
-     * @return Parent thread.
-     */
-    public Thread parent() {
-        return parent;
-    }
-
-    /**
      * @return Runner thread.
      */
     public Thread runner() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractMultithreadedSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractMultithreadedSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractMultithreadedSelfTest.java
index 2977ac8..3c1e7c6 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractMultithreadedSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/cache/store/jdbc/CacheJdbcStoreAbstractMultithreadedSelfTest.java
@@ -74,6 +74,11 @@ public abstract class 
CacheJdbcStoreAbstractMultithreadedSelfTest<T extends Cach
     }
 
     /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        store = null;
+    }
+
+    /** {@inheritDoc} */
     @Override protected void beforeTest() throws Exception {
         Connection conn = DriverManager.getConnection(DFLT_CONN_URL, "sa", "");
 
@@ -224,8 +229,12 @@ public abstract class 
CacheJdbcStoreAbstractMultithreadedSelfTest<T extends Cach
 
                     List<Integer> ids = new ArrayList<>(cnt);
 
-                    for (int j = 0; j < cnt; j++)
-                        ids.add(rnd.nextInt());
+                    for (int j = 0; j < cnt; j++) {
+                        int id = rnd.nextInt(5000);
+
+                        if (!ids.contains(id))
+                            ids.add(id);
+                    }
 
                     Collections.sort(ids);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAlwaysEvictionPolicy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAlwaysEvictionPolicy.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAlwaysEvictionPolicy.java
index 8689671..83f1502 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAlwaysEvictionPolicy.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAlwaysEvictionPolicy.java
@@ -19,15 +19,27 @@ package org.apache.ignite.internal.processors.cache;
 
 import org.apache.ignite.cache.eviction.*;
 
+import java.io.*;
+
 /**
  * Cache eviction policy that expires every entry essentially keeping the 
cache empty.
  * This eviction policy can be used whenever one cache is used to front another
  * and its size should be kept at {@code 0}.
  */
-public class GridCacheAlwaysEvictionPolicy<K, V> implements 
CacheEvictionPolicy<K, V> {
+public class GridCacheAlwaysEvictionPolicy<K, V> implements 
CacheEvictionPolicy<K, V>, Externalizable {
     /** {@inheritDoc} */
     @Override public void onEntryAccessed(boolean rmv, EvictableEntry<K, V> 
entry) {
         if (!rmv && entry.isCached())
             entry.evict();
     }
+
+    /** {@inheritDoc} */
+    @Override public void writeExternal(ObjectOutput out) throws IOException {
+        // No-op.
+    }
+
+    /** {@inheritDoc} */
+    @Override public void readExternal(ObjectInput in) throws IOException, 
ClassNotFoundException {
+        // No-op.
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxStoreExceptionAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxStoreExceptionAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxStoreExceptionAbstractSelfTest.java
index 8a83eae..2e356ae 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxStoreExceptionAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteTxStoreExceptionAbstractSelfTest.java
@@ -23,13 +23,12 @@ import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.processors.cache.distributed.near.*;
+import org.apache.ignite.internal.transactions.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.testframework.*;
 import org.apache.ignite.transactions.*;
 import org.jetbrains.annotations.*;
 
-import javax.cache.*;
-import javax.cache.configuration.*;
 import javax.cache.integration.*;
 import javax.cache.processor.*;
 import java.util.*;
@@ -38,11 +37,11 @@ import java.util.concurrent.*;
 import static org.apache.ignite.cache.CacheMode.*;
 
 /**
- * Tests that transaction is invalidated in case of {@link 
org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException}.
+ * Tests that transaction is invalidated in case of {@link 
IgniteTxHeuristicCheckedException}.
  */
 public abstract class IgniteTxStoreExceptionAbstractSelfTest extends 
GridCacheAbstractSelfTest {
     /** Index SPI throwing exception. */
-    private static TestStore store = new TestStore();
+    private static TestStore store;
 
     /** */
     private static final int PRIMARY = 0;
@@ -75,7 +74,7 @@ public abstract class IgniteTxStoreExceptionAbstractSelfTest 
extends GridCacheAb
     @Override protected CacheConfiguration cacheConfiguration(String gridName) 
throws Exception {
         CacheConfiguration ccfg = super.cacheConfiguration(gridName);
 
-        ccfg.setCacheStoreFactory(new FactoryBuilder.SingletonFactory(store));
+        ccfg.setCacheStoreFactory(GridTestUtils.storeFactory(store));
         ccfg.setReadThrough(true);
         ccfg.setWriteThrough(true);
         ccfg.setLoadPreviousValue(true);
@@ -85,12 +84,19 @@ public abstract class 
IgniteTxStoreExceptionAbstractSelfTest extends GridCacheAb
 
     /** {@inheritDoc} */
     @Override protected void beforeTestsStarted() throws Exception {
+        store = new TestStore();
+
         super.beforeTestsStarted();
 
         lastKey = 0;
     }
 
     /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        store = null;
+    }
+
+    /** {@inheritDoc} */
     @Override protected void afterTest() throws Exception {
         store.forceFail(false);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAtomicTimeoutSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAtomicTimeoutSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAtomicTimeoutSelfTest.java
index 714da5d..141f6f9 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAtomicTimeoutSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAtomicTimeoutSelfTest.java
@@ -64,6 +64,8 @@ public class GridCacheAtomicTimeoutSelfTest extends 
GridCommonAbstractTest {
 
         cfg.setCacheConfiguration(ccfg);
 
+        cfg.setCommunicationSpi(new TestCommunicationSpi());
+
         cfg.setNetworkTimeout(3000);
 
         return cfg;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedBasicStoreMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedBasicStoreMultiNodeSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedBasicStoreMultiNodeSelfTest.java
index ebefc7b..0288c49 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedBasicStoreMultiNodeSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedBasicStoreMultiNodeSelfTest.java
@@ -26,10 +26,10 @@ import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.spi.discovery.tcp.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.*;
 import org.apache.ignite.testframework.junits.common.*;
 import org.apache.ignite.transactions.*;
 
-import javax.cache.configuration.*;
 import java.util.*;
 
 import static org.apache.ignite.cache.CacheAtomicityMode.*;
@@ -104,7 +104,7 @@ public class 
GridCachePartitionedBasicStoreMultiNodeSelfTest extends GridCommonA
 
         stores.add(store);
 
-        cc.setCacheStoreFactory(new FactoryBuilder.SingletonFactory(store));
+        cc.setCacheStoreFactory(GridTestUtils.storeFactory(store));
         cc.setReadThrough(true);
         cc.setWriteThrough(true);
         cc.setLoadPreviousValue(true);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
index badcb70..7ec499a 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/GridTestUtils.java
@@ -1517,6 +1517,13 @@ public final class GridTestUtils {
     /**
      *
      */
+    public static void clear() {
+        SerializableStore.serializedObj.clear();
+    }
+
+    /**
+     *
+     */
     private static class SingletonStoreFactory<T> implements Factory<T> {
         /** */
         private final T store;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fd31044/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 96e54c5..1269a9f 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.spi.discovery.tcp.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.*;
 import org.apache.ignite.testframework.*;
 import org.apache.ignite.testframework.config.*;
+import org.apache.ignite.testframework.junits.logger.*;
 import org.apache.log4j.*;
 import org.jetbrains.annotations.*;
 import org.springframework.beans.*;
@@ -124,7 +125,7 @@ public abstract class GridAbstractTest extends TestCase {
         // Initialize properties. Logger initialized here.
         GridTestProperties.init();
 
-        log = 
getTestCounters().getTestResources().getLogger().getLogger(getClass());
+        log = new GridTestLog4jLogger();
 
         this.startGrid = startGrid;
     }
@@ -1192,11 +1193,40 @@ public abstract class GridAbstractTest extends TestCase 
{
                 OptimizedMarshaller.clearCache();
                 MarshallerExclusions.clearCache();
                 GridEnumCache.clear();
+                GridTestUtils.clear();
             }
 
             Thread.currentThread().setContextClassLoader(clsLdr);
 
             clsLdr = null;
+
+            cleanReferences();
+        }
+    }
+
+    /**
+     *
+     */
+    protected void cleanReferences() {
+        Class cls = getClass();
+
+        while (cls != null) {
+            Field[] fields = getClass().getDeclaredFields();
+
+            for (Field f : fields) {
+                if (Modifier.isStatic(f.getModifiers()))
+                    continue;
+
+                f.setAccessible(true);
+
+                try {
+                    f.set(this, null);
+                }
+                catch (Exception ignored) {
+                }
+            }
+
+            cls = cls.getSuperclass();
         }
     }
 

Reply via email to