IGNITE-651 - Persistance for marshaller cache
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/ea7d2485 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/ea7d2485 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/ea7d2485 Branch: refs/heads/ignite-598 Commit: ea7d2485622cc455be536dec3ecbb36dec3498db Parents: c6b3380 Author: Valentin Kulichenko <vkuliche...@gridgain.com> Authored: Tue Mar 31 13:29:08 2015 -0700 Committer: Valentin Kulichenko <vkuliche...@gridgain.com> Committed: Tue Mar 31 13:29:08 2015 -0700 ---------------------------------------------------------------------- .../checkpoint/s3/S3CheckpointSpiSelfTest.java | 12 +-- .../ignite/internal/GridKernalContextImpl.java | 3 +- .../org/apache/ignite/internal/IgnitionEx.java | 6 +- .../internal/MarshallerContextAdapter.java | 6 +- .../ignite/internal/MarshallerContextImpl.java | 90 ++++++++++++++++++-- .../processors/cache/GridCacheProcessor.java | 8 +- .../CacheContinuousQueryListener.java | 3 + .../continuous/CacheContinuousQueryManager.java | 2 +- .../ignite/internal/util/IgniteUtils.java | 2 +- .../ignite/marshaller/MarshallerContext.java | 3 +- .../optimized/OptimizedMarshallerUtils.java | 9 +- .../managers/GridNoopManagerSelfTest.java | 2 +- .../communication/GridIoManagerSelfTest.java | 9 +- .../internal/util/IgniteUtilsSelfTest.java | 2 +- .../OptimizedMarshallerNodeFailoverTest.java | 71 ++++++++++++++- .../spi/GridSpiLocalHostInjectionTest.java | 2 +- .../GridPriorityQueueCollisionSpiSelfTest.java | 2 +- ...RobinLoadBalancingSpiNotPerTaskSelfTest.java | 2 +- .../testframework/junits/GridAbstractTest.java | 28 +++--- .../junits/GridTestKernalContext.java | 2 +- .../junits/IgniteTestResources.java | 8 +- .../junits/spi/GridSpiAbstractTest.java | 13 +-- 22 files changed, 231 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiSelfTest.java b/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiSelfTest.java index f48a754..bb92e09 100644 --- a/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiSelfTest.java +++ b/modules/aws/src/test/java/org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpiSelfTest.java @@ -100,7 +100,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi final String key = KEY_PREFIX + i; assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertNotNull("Missing checkpoint: " + key, getSpi().loadCheckpoint(key)); } @@ -122,7 +122,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi final String key = KEY_PREFIX + i; assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertTrue(getSpi().removeCheckpoint(key)); } }); @@ -133,7 +133,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi final String key = KEY_PREFIX + i; assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertNull(getSpi().loadCheckpoint(key)); } }); @@ -159,7 +159,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi final String key = KEY_PREFIX + i; assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertNull("Checkpoint state should not be loaded with key: " + key, getSpi().loadCheckpoint(key)); } @@ -181,7 +181,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi getSpi().saveCheckpoint(KEY_PREFIX, GridTestIoUtils.serializeJdk(state2), 0, true); assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertNotNull(getSpi().loadCheckpoint(KEY_PREFIX)); } }); @@ -197,7 +197,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi getSpi().removeCheckpoint(KEY_PREFIX); assertWithRetries(new GridAbsClosureX() { - @Override public void applyx() { + @Override public void applyx() throws IgniteCheckedException { assertNull(getSpi().loadCheckpoint(KEY_PREFIX)); } }); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java index 6c953e7..4abf5e7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java @@ -325,6 +325,7 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable * @param mgmtExecSvc Management executor service. * @param igfsExecSvc IGFS executor service. * @param restExecSvc REST executor service. + * @throws IgniteCheckedException In case of error. */ @SuppressWarnings("TypeMayBeWeakened") protected GridKernalContextImpl( @@ -339,7 +340,7 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable ExecutorService p2pExecSvc, ExecutorService mgmtExecSvc, ExecutorService igfsExecSvc, - ExecutorService restExecSvc) { + ExecutorService restExecSvc) throws IgniteCheckedException { assert grid != null; assert cfg != null; assert gw != null; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java index 4c8a567..19fff08 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java @@ -19,11 +19,11 @@ package org.apache.ignite.internal; import org.apache.ignite.*; import org.apache.ignite.cache.affinity.rendezvous.*; -import org.apache.ignite.compute.ComputeJob; +import org.apache.ignite.compute.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.processors.resource.*; -import org.apache.ignite.internal.util.spring.*; import org.apache.ignite.internal.util.*; +import org.apache.ignite.internal.util.spring.*; import org.apache.ignite.internal.util.typedef.*; import org.apache.ignite.internal.util.typedef.internal.*; import org.apache.ignite.lang.*; @@ -34,7 +34,7 @@ import org.apache.ignite.marshaller.jdk.*; import org.apache.ignite.marshaller.optimized.*; import org.apache.ignite.mxbean.*; import org.apache.ignite.plugin.segmentation.*; -import org.apache.ignite.resources.SpringApplicationContextResource; +import org.apache.ignite.resources.*; import org.apache.ignite.spi.*; import org.apache.ignite.spi.checkpoint.noop.*; import org.apache.ignite.spi.collision.noop.*; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java index 08f2137..5dca2f2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextAdapter.java @@ -95,7 +95,7 @@ public abstract class MarshallerContextAdapter implements MarshallerContext { } /** {@inheritDoc} */ - @Override public Class getClass(int id, ClassLoader ldr) throws ClassNotFoundException { + @Override public Class getClass(int id, ClassLoader ldr) throws ClassNotFoundException, IgniteCheckedException { String clsName = map.get(id); if (clsName == null) { @@ -118,6 +118,7 @@ public abstract class MarshallerContextAdapter implements MarshallerContext { * @param id Type ID. * @param clsName Class name. * @return Whether class name was registered. + * @throws IgniteCheckedException In case of error. */ protected abstract boolean registerClassName(int id, String clsName) throws IgniteCheckedException; @@ -126,6 +127,7 @@ public abstract class MarshallerContextAdapter implements MarshallerContext { * * @param id Type ID. * @return Class name. + * @throws IgniteCheckedException In case of error. */ - protected abstract String className(int id); + protected abstract String className(int id) throws IgniteCheckedException; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java index 17de465..4a27222 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java @@ -21,6 +21,8 @@ import org.apache.ignite.*; import org.apache.ignite.internal.processors.cache.*; import org.apache.ignite.internal.util.typedef.internal.*; +import javax.cache.event.*; +import java.io.*; import java.util.concurrent.*; /** @@ -31,6 +33,9 @@ public class MarshallerContextImpl extends MarshallerContextAdapter { private final CountDownLatch latch = new CountDownLatch(1); /** */ + private final File workDir; + + /** */ private IgniteLogger log; /** */ @@ -40,9 +45,30 @@ public class MarshallerContextImpl extends MarshallerContextAdapter { private int failedCnt; /** + * @throws IgniteCheckedException In case of error. + */ + public MarshallerContextImpl() throws IgniteCheckedException { + workDir = U.resolveWorkDirectory("marshaller", false); + } + + /** + * @param ctx Kernal context. + * @throws IgniteCheckedException In case of error. + */ + public void onMarshallerCacheStarted(GridKernalContext ctx) throws IgniteCheckedException { + ctx.cache().marshallerCache().context().continuousQueries().executeInternalQuery( + new ContinuousQueryListener(log, workDir), + null, + true, + true + ); + } + + /** * @param ctx Kernal context. + * @throws IgniteCheckedException In case of error. */ - public void onMarshallerCacheReady(GridKernalContext ctx) { + public void onMarshallerCachePreloaded(GridKernalContext ctx) throws IgniteCheckedException { assert ctx != null; log = ctx.log(MarshallerContextImpl.class); @@ -89,15 +115,63 @@ public class MarshallerContextImpl extends MarshallerContextAdapter { } /** {@inheritDoc} */ - @Override protected String className(int id) { - try { - if (cache == null) - U.awaitQuiet(latch); + @Override protected String className(int id) throws IgniteCheckedException { + if (cache == null) + U.awaitQuiet(latch); + + String clsName = cache.get(id); + + if (clsName == null) { + File file = new File(workDir, id + ".classname"); - return cache.get(id); + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + clsName = reader.readLine(); + } + catch (IOException e) { + throw new IgniteCheckedException("Failed to read class name from file [id=" + id + + ", file=" + file.getAbsolutePath() + ']', e); + } } - catch (IgniteCheckedException e) { - throw U.convertException(e); + + return clsName; + } + + /** + */ + private static class ContinuousQueryListener implements CacheEntryUpdatedListener<Integer, String> { + /** */ + private final IgniteLogger log; + + /** */ + private final File workDir; + + /** + * @param log Logger. + * @param workDir Work directory. + */ + private ContinuousQueryListener(IgniteLogger log, File workDir) { + this.log = log; + this.workDir = workDir; + } + + /** {@inheritDoc} */ + @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends String>> events) + throws CacheEntryListenerException { + for (CacheEntryEvent<? extends Integer, ? extends String> evt : events) { + assert evt.getOldValue() == null; + + File file = new File(workDir, evt.getKey() + ".classname"); + + try (Writer writer = new FileWriter(file)) { + writer.write(evt.getValue()); + + writer.flush(); + } + catch (IOException e) { + U.error(log, "Failed to write class name to file [id=" + evt.getKey() + + ", clsName=" + evt.getValue() + ", file=" + file.getAbsolutePath() + ']', e); + } + } } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/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 a04746a..0e96994 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 @@ -677,9 +677,11 @@ public class GridCacheProcessor extends GridProcessorAdapter { } } - marshallerCache().context().preloader().syncFuture().listen(new CI1<IgniteInternalFuture<?>>() { - @Override public void apply(IgniteInternalFuture<?> f) { - ctx.marshallerContext().onMarshallerCacheReady(ctx); + ctx.marshallerContext().onMarshallerCacheStarted(ctx); + + marshallerCache().context().preloader().syncFuture().listen(new CIX1<IgniteInternalFuture<?>>() { + @Override public void applyx(IgniteInternalFuture<?> f) throws IgniteCheckedException { + ctx.marshallerContext().onMarshallerCachePreloaded(ctx); } }); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryListener.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryListener.java index b779c18..a21213f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryListener.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryListener.java @@ -45,5 +45,8 @@ interface CacheContinuousQueryListener<K, V> { */ public boolean oldValueRequired(); + /** + * @return Whether to notify on existing entries. + */ public boolean notifyExisting(); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java index eff845d..ed3bbea 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java @@ -129,7 +129,7 @@ public class CacheContinuousQueryManager extends GridCacheManagerAdapter { assert e != null; assert key != null; - boolean internal = e.isInternal(); + boolean internal = e.isInternal() || e.context().system(); if (preload && !internal) return; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index 5f6da0f..8aebac2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -8347,7 +8347,7 @@ public abstract class IgniteUtils { /** * Nullifies work directory. For test purposes only. */ - static void nullifyWorkDirectory() { + public static void nullifyWorkDirectory() { igniteWork = null; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java index 393a35b..f0e248a 100644 --- a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java +++ b/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerContext.java @@ -40,6 +40,7 @@ public interface MarshallerContext { * @param ldr Class loader. * @return Class. * @throws ClassNotFoundException If class was not found. + * @throws IgniteCheckedException In case of any other error. */ - public Class getClass(int id, ClassLoader ldr) throws ClassNotFoundException; + public Class getClass(int id, ClassLoader ldr) throws ClassNotFoundException, IgniteCheckedException; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java index d5caa9d..fafdea1 100644 --- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerUtils.java @@ -246,7 +246,14 @@ class OptimizedMarshallerUtils { ClassLoader ldr, MarshallerContext ctx, OptimizedMarshallerIdMapper mapper) throws IOException, ClassNotFoundException { - Class cls = ctx.getClass(id, ldr); + Class cls; + + try { + cls = ctx.getClass(id, ldr); + } + catch (IgniteCheckedException e) { + throw new IOException("Failed to resolve class for ID: " + id, e); + } OptimizedClassDescriptor desc = clsMap.get(cls); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/internal/managers/GridNoopManagerSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridNoopManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridNoopManagerSelfTest.java index dab197c..e0a62e1 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/managers/GridNoopManagerSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/GridNoopManagerSelfTest.java @@ -32,7 +32,7 @@ public class GridNoopManagerSelfTest extends GridCommonAbstractTest { /** * */ - public void testEnabledManager() { + public void testEnabledManager() throws IgniteCheckedException { GridTestKernalContext ctx = new GridTestKernalContext(new GridStringLogger()); assertTrue(new Manager(ctx, new Spi()).enabled()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java index c11156a..3890716 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/GridIoManagerSelfTest.java @@ -45,7 +45,7 @@ import static org.mockito.Mockito.*; */ public class GridIoManagerSelfTest extends GridCommonAbstractTest { /** Grid test context. */ - private GridTestKernalContext ctx = new GridTestKernalContext(log); + private GridTestKernalContext ctx; /** Test local node. */ private GridTestNode locNode = new GridTestNode(UUID.randomUUID()); @@ -53,6 +53,13 @@ public class GridIoManagerSelfTest extends GridCommonAbstractTest { /** Test remote node. */ private GridTestNode rmtNode = new GridTestNode(UUID.randomUUID()); + /** + * @throws IgniteCheckedException In case of error. + */ + public GridIoManagerSelfTest() throws IgniteCheckedException { + ctx = new GridTestKernalContext(log); + } + /** {@inheritDoc} */ @Override protected void beforeTest() throws Exception { ctx.config().setCommunicationSpi(new TcpCommunicationSpi()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java index 8f7796d..6e3e0e2 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java @@ -293,7 +293,7 @@ public class IgniteUtilsSelfTest extends GridCommonAbstractTest { /** * @param ignite Grid. */ - private SelfReferencedJob(Ignite ignite) { + private SelfReferencedJob(Ignite ignite) throws IgniteCheckedException { node = ignite.cluster().localNode(); ref = this; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java index a28996d..07fd9e3 100644 --- a/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java +++ b/modules/core/src/test/java/org/apache/ignite/marshaller/optimized/OptimizedMarshallerNodeFailoverTest.java @@ -20,6 +20,8 @@ package org.apache.ignite.marshaller.optimized; import org.apache.ignite.*; import org.apache.ignite.configuration.*; import org.apache.ignite.internal.*; +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.marshaller.*; import org.apache.ignite.spi.discovery.tcp.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.*; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; @@ -42,6 +44,9 @@ public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest /** */ private boolean cache; + /** */ + private String workDir; + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { IgniteConfiguration cfg = super.getConfiguration(gridName); @@ -54,6 +59,8 @@ public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest cfg.setMarshaller(new OptimizedMarshaller()); + cfg.setWorkDirectory(workDir); + if (cache) { CacheConfiguration ccfg = new CacheConfiguration(); @@ -111,6 +118,66 @@ public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest assertNotNull(ignite.cache(null)); } + /** + * @throws Exception If failed. + */ + public void testRestartAllNodes() throws Exception { + cache = false; + + String home = U.getIgniteHome(); + + String[] workDirs = new String[3]; + + for (int i = 0; i < 3; i++) { + workDirs[i] = home + "/work/marshallerTestNode_" + i; + + File file = new File(workDirs[i]); + + if (file.exists()) + assert U.delete(file); + } + + try { + for (int i = 0; i < workDirs.length; i++) { + workDir = workDirs[i]; + + U.nullifyWorkDirectory(); + + startGrid(i); + } + + Marshaller marsh = ignite(0).configuration().getMarshaller(); + + TestClass1 obj = new TestClass1(); + + obj.val = 111; + + byte[] bytes = marsh.marshal(obj); + + stopAllGrids(); + + for (int i = 0; i < workDirs.length; i++) { + workDir = workDirs[i]; + + U.nullifyWorkDirectory(); + + startGrid(i); + } + + for (int i = 0; i < 3; i++) { + marsh = ignite(i).configuration().getMarshaller(); + + TestClass1 obj0 = marsh.unmarshal(bytes, null); + + assertEquals(111, obj0.val); + } + } + finally { + for (String dir : workDirs) + assert U.delete(new File(dir)); + } + } + /** {@inheritDoc} */ @Override protected void afterTest() throws Exception { super.afterTest(); @@ -153,7 +220,9 @@ public class OptimizedMarshallerNodeFailoverTest extends GridCommonAbstractTest /** * */ - static class TestClass1 implements Serializable {} + static class TestClass1 implements Serializable { + int val; + } /** * http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/spi/GridSpiLocalHostInjectionTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/GridSpiLocalHostInjectionTest.java b/modules/core/src/test/java/org/apache/ignite/spi/GridSpiLocalHostInjectionTest.java index 7925823..a0eb81f 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/GridSpiLocalHostInjectionTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/GridSpiLocalHostInjectionTest.java @@ -141,7 +141,7 @@ public class GridSpiLocalHostInjectionTest extends GridCommonAbstractTest { * @param cfgVal {@code true} if {@code localHost} property value should be set to configuration. * @return Resource processor. */ - private GridResourceProcessor getResourceProcessor(boolean cfgVal) { + private GridResourceProcessor getResourceProcessor(boolean cfgVal) throws IgniteCheckedException { GridTestKernalContext ctx = newContext(); if (cfgVal) http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java index 40e5b28..0e993a1 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/collision/priorityqueue/GridPriorityQueueCollisionSpiSelfTest.java @@ -32,7 +32,7 @@ import static org.apache.ignite.spi.collision.priorityqueue.PriorityQueueCollisi @GridSpiTest(spi = PriorityQueueCollisionSpi.class, group = "Collision SPI") public class GridPriorityQueueCollisionSpiSelfTest extends GridSpiAbstractTest<PriorityQueueCollisionSpi> { /** {@inheritDoc} */ - @Override protected void afterTest() { + @Override protected void afterTest() throws Exception { getSpi().setParallelJobsNumber(DFLT_PARALLEL_JOBS_NUM); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java index 72c1014..55c3016 100644 --- a/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/spi/loadbalancing/roundrobin/GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest.java @@ -112,7 +112,7 @@ public class GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest } /** */ - public void testNodeNotInTopology() { + public void testNodeNotInTopology() throws Exception { ComputeTaskSession ses = new GridTestTaskSession(); ClusterNode node = new GridTestNode(UUID.randomUUID()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/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 93d1d74..da316fd 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 @@ -116,7 +116,7 @@ public abstract class GridAbstractTest extends TestCase { private static final ConcurrentMap<UUID, Object> serializedObj = new ConcurrentHashMap<>(); /** */ - protected GridAbstractTest() { + protected GridAbstractTest() throws IgniteCheckedException { this(false); log = getTestCounters().getTestResources().getLogger().getLogger(getClass()); @@ -172,7 +172,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return Test resources. */ - protected IgniteTestResources getTestResources() { + protected IgniteTestResources getTestResources() throws IgniteCheckedException { return getTestCounters().getTestResources(); } @@ -215,7 +215,8 @@ public abstract class GridAbstractTest extends TestCase { * @param cats Additional categories. */ @SuppressWarnings({"deprecation"}) - protected void resetLog4j(Level log4jLevel, boolean logToFile, String cat, String... cats) { + protected void resetLog4j(Level log4jLevel, boolean logToFile, String cat, String... cats) + throws IgniteCheckedException { for (String c : F.concat(false, cat, F.asList(cats))) Logger.getLogger(c).setLevel(log4jLevel); @@ -381,7 +382,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return Test kernal context. */ - protected GridTestKernalContext newContext() { + protected GridTestKernalContext newContext() throws IgniteCheckedException { return new GridTestKernalContext(log()); } @@ -672,7 +673,7 @@ public abstract class GridAbstractTest extends TestCase { * @param cfg Configuration. * @return Optimized configuration (by modifying passed in one). */ - protected IgniteConfiguration optimize(IgniteConfiguration cfg) { + protected IgniteConfiguration optimize(IgniteConfiguration cfg) throws IgniteCheckedException { // TODO: GG-4048: propose another way to avoid network overhead in tests. if (cfg.getLocalHost() == null) { if (cfg.getDiscoverySpi() instanceof TcpDiscoverySpi) @@ -1055,7 +1056,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return Ignite home. */ - protected String home() { + protected String home() throws IgniteCheckedException { return getTestResources().getIgniteHome(); } @@ -1250,7 +1251,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return First test flag. */ - protected boolean isFirstTest() { + protected boolean isFirstTest() throws IgniteCheckedException { TestCounters cntrs = getTestCounters(); return cntrs.getStarted() == 1 && cntrs.getStopped() == 0; @@ -1259,7 +1260,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return Last test flag. */ - protected boolean isLastTest() { + protected boolean isLastTest() throws IgniteCheckedException { TestCounters cntrs = getTestCounters(); return cntrs.getStopped() == cntrs.getNumberOfTests(); @@ -1268,7 +1269,7 @@ public abstract class GridAbstractTest extends TestCase { /** * @return Test counters. */ - protected synchronized TestCounters getTestCounters() { + protected synchronized TestCounters getTestCounters() throws IgniteCheckedException { TestCounters tc = tests.get(getClass()); if (tc == null) @@ -1461,7 +1462,14 @@ public abstract class GridAbstractTest extends TestCase { private boolean reset; /** */ - private IgniteTestResources rsrcs = new IgniteTestResources(); + private IgniteTestResources rsrcs; + + /** + * @throws IgniteCheckedException In case of error. + */ + public TestCounters() throws IgniteCheckedException { + rsrcs = new IgniteTestResources(); + } /** * @return Reset flag. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java index b871a4a..6b7a7f9 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridTestKernalContext.java @@ -33,7 +33,7 @@ public class GridTestKernalContext extends GridKernalContextImpl { /** * @param log Logger to use in context config. */ - public GridTestKernalContext(IgniteLogger log) { + public GridTestKernalContext(IgniteLogger log) throws IgniteCheckedException { super(new GridLoggerProxy(log, null, null, null), new IgniteKernal(null), new IgniteConfiguration(), http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java index 583c082..61dddbe 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteTestResources.java @@ -63,13 +63,15 @@ public class IgniteTestResources { private GridResourceProcessor rsrcProc; /** */ - public IgniteTestResources() { + public IgniteTestResources() throws IgniteCheckedException { log = rootLog.getLogger(getClass()); nodeId = UUID.randomUUID(); jmx = ManagementFactory.getPlatformMBeanServer(); home = U.getIgniteHome(); locHost = localHost(); + U.setWorkDirectory(null, null); + GridTestKernalContext ctx = new GridTestKernalContext(log); rsrcProc = new GridResourceProcessor(ctx); @@ -78,7 +80,7 @@ public class IgniteTestResources { /** * @param jmx JMX server. */ - public IgniteTestResources(MBeanServer jmx) { + public IgniteTestResources(MBeanServer jmx) throws IgniteCheckedException { assert jmx != null; this.jmx = jmx; @@ -97,7 +99,7 @@ public class IgniteTestResources { /** * @param log Logger. */ - public IgniteTestResources(IgniteLogger log) { + public IgniteTestResources(IgniteLogger log) throws IgniteCheckedException { assert log != null; this.log = log.getLogger(getClass()); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ea7d2485/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java index 3df5283..7898c3d 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java @@ -17,6 +17,7 @@ package org.apache.ignite.testframework.junits.spi; +import org.apache.ignite.*; import org.apache.ignite.cluster.*; import org.apache.ignite.internal.*; import org.apache.ignite.internal.util.typedef.internal.*; @@ -86,7 +87,7 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr * @return Test data. */ @SuppressWarnings({"unchecked"}) - protected TestData<T> getTestData() { + protected TestData<T> getTestData() throws IgniteCheckedException { TestData<T> data = (TestData<T>)tests.get(getClass()); if (data == null) @@ -157,7 +158,7 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr } /** {@inheritDoc} */ - @Override protected final IgniteTestResources getTestResources() { + @Override protected final IgniteTestResources getTestResources() throws IgniteCheckedException { return getTestData().getTestResources(); } @@ -429,7 +430,7 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr /** * @return Fully initialized and started SPI implementation. */ - protected final T getSpi() { + protected final T getSpi() throws IgniteCheckedException { return getTestData().getSpi(); } @@ -584,13 +585,13 @@ public abstract class GridSpiAbstractTest<T extends IgniteSpi> extends GridAbstr private Map<String, Object> allAttrs = new HashMap<>(); /** */ - private IgniteTestResources rsrcs = new IgniteTestResources(); + private IgniteTestResources rsrcs; /** * */ - TestData() { - // No-op. + TestData() throws IgniteCheckedException { + rsrcs = new IgniteTestResources(); } /**