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(); } }