IGNITE-2079 (revert commit) GridCacheIoManager eats exception trail if it falls into the directed case
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e821dc00 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e821dc00 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e821dc00 Branch: refs/heads/ignite-4242 Commit: e821dc0083003bc81058b1cb223d8a8a2ee44daf Parents: 40ef2f5 Author: Dmitriy Govorukhin <[email protected]> Authored: Tue Nov 8 15:09:21 2016 +0300 Committer: Dmitriy Govorukhin <[email protected]> Committed: Tue Nov 8 15:09:21 2016 +0300 ---------------------------------------------------------------------- .../org/apache/ignite/events/EventType.java | 6 - .../ignite/events/UnhandledExceptionEvent.java | 61 ---- .../processors/cache/GridCacheIoManager.java | 70 ++--- .../cache/query/GridCacheQueryManager.java | 10 - .../query/GridCacheQueryMetricsAdapter.java | 7 - .../cache/query/GridCacheQueryResponse.java | 2 +- .../continuous/CacheContinuousQueryHandler.java | 50 ++- ...2pUnmarshallingContinuousQueryErrorTest.java | 302 ------------------- ...niteCacheP2pUnmarshallingErrorTestSuite.java | 6 +- 9 files changed, 60 insertions(+), 454 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/events/EventType.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/events/EventType.java b/modules/core/src/main/java/org/apache/ignite/events/EventType.java index 7778f67..103dbd4 100644 --- a/modules/core/src/main/java/org/apache/ignite/events/EventType.java +++ b/modules/core/src/main/java/org/apache/ignite/events/EventType.java @@ -859,12 +859,6 @@ public interface EventType { public static final int EVT_IGFS_FILE_PURGED = 127; /** - * Built-in event type: event for unhandled exception. - * - */ - public static final int EVT_UNHANDLED_EXCEPTION = 128; - - /** * All checkpoint events. This array can be directly passed into * {@link IgniteEvents#localListen(IgnitePredicate, int...)} method to * subscribe to all checkpoint events. http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/events/UnhandledExceptionEvent.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/events/UnhandledExceptionEvent.java b/modules/core/src/main/java/org/apache/ignite/events/UnhandledExceptionEvent.java deleted file mode 100644 index cb6cd85..0000000 --- a/modules/core/src/main/java/org/apache/ignite/events/UnhandledExceptionEvent.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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.events; - -import org.apache.ignite.cluster.ClusterNode; - -/** - * Cache fail event. - */ -public class UnhandledExceptionEvent extends EventAdapter { - /** */ - private static final long serialVersionUID = 0L; - - /** */ - private Exception ex; - - /** - * Default constructor. - */ - public UnhandledExceptionEvent() { - } - - /** - * @param node Node. - * @param msg Message. - * @param ex Exception. - * @param type Type. - */ - public UnhandledExceptionEvent(ClusterNode node, String msg, Exception ex, int type) { - super(node, msg, type); - this.ex = ex; - } - - /** {@inheritDoc} */ - @Override public String toString() { - return "msg=" + message() + ", type=" + type() + "ex=" + ex; - } - - /** - * - * @return inner exception - */ - public Exception getException() { - return ex; - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java index 5d7cb00..78dddd3 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheIoManager.java @@ -17,26 +17,50 @@ package org.apache.ignite.internal.processors.cache; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteException; import org.apache.ignite.IgniteLogger; import org.apache.ignite.binary.BinaryObjectException; import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.events.UnhandledExceptionEvent; -import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.managers.communication.GridMessageListener; import org.apache.ignite.internal.managers.deployment.GridDeploymentInfo; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.distributed.dht.*; +import org.apache.ignite.internal.processors.cache.distributed.dht.CacheGetFuture; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtAffinityAssignmentRequest; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockRequest; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLockResponse; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishRequest; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishResponse; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareRequest; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareResponse; +import org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicUpdateRequest; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicUpdateResponse; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateRequest; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicUpdateResponse; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtForceKeysRequest; import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtForceKeysResponse; -import org.apache.ignite.internal.processors.cache.distributed.near.*; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetRequest; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearGetResponse; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearLockRequest; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearLockResponse; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearSingleGetRequest; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearSingleGetResponse; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishRequest; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishResponse; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareRequest; +import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse; import org.apache.ignite.internal.processors.cache.query.GridCacheQueryRequest; import org.apache.ignite.internal.processors.cache.query.GridCacheQueryResponse; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; @@ -55,12 +79,6 @@ import org.apache.ignite.lang.IgniteUuid; import org.jetbrains.annotations.Nullable; import org.jsr166.ConcurrentHashMap8; -import java.util.*; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; - -import static org.apache.ignite.events.EventType.EVT_UNHANDLED_EXCEPTION; import static org.apache.ignite.internal.GridTopic.TOPIC_CACHE; /** @@ -675,11 +693,6 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { break; - case 59: - // No additional actions required, just skipping default switch section, - // since UnhandledException already registered. - break; - case 114: { processMessage(nodeId,msg,c);// Will be handled by Rebalance Demander. } @@ -724,34 +737,13 @@ public class GridCacheIoManager extends GridCacheSharedManagerAdapter { break; - default:{ - String shortMsg = "Failed to send response to node. Unsupported direct type [message=" + msg + "]"; - - IgniteCheckedException e = new IgniteCheckedException(shortMsg, msg.classError()); - - registerUnhandledException(ctx, shortMsg, e); - } + default: + throw new IgniteCheckedException("Failed to send response to node. Unsupported direct type [message=" + + msg + "]", msg.classError()); } } /** - * @param ctx Grid cache context. - * @param shortMsg Short message. - * @param ex Original Exception. - */ - public static void registerUnhandledException(GridCacheContext ctx, String shortMsg, IgniteCheckedException ex) { - GridKernalContext kctx = ctx.kernalContext(); - - kctx.exceptionRegistry().onException(shortMsg, ex); - - ClusterNode node = ctx.discovery().localNode(); - - UnhandledExceptionEvent evt = new UnhandledExceptionEvent(node, shortMsg, ex, EVT_UNHANDLED_EXCEPTION); - - kctx.event().record(evt); - } - - /** * @param nodeId Node ID. * @param msg Message. * @param c Closure. http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java index 97e59c1..7bd1a51 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java @@ -326,16 +326,6 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte } /** - * Increment fails counter. - */ - public void onUnhandledException() { - final boolean statsEnabled = cctx.config().isStatisticsEnabled(); - - if (statsEnabled) - metrics.incrementOnFails(); - } - - /** * Processes cache query request. * * @param sndId Sender node id. http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java index d25b7c4..99056a2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryMetricsAdapter.java @@ -172,11 +172,4 @@ public class GridCacheQueryMetricsAdapter implements QueryMetrics, Externalizabl @Override public String toString() { return S.toString(GridCacheQueryMetricsAdapter.class, this); } - - /** - * Increment fails counter. - */ - public void incrementOnFails() { - fails.increment(); - } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java index 2b86efe..8492c38 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryResponse.java @@ -357,6 +357,6 @@ public class GridCacheQueryResponse extends GridCacheMessage implements GridCach /** {@inheritDoc} */ @Override public String toString() { - return S.toString(GridCacheQueryResponse.class, this, super.toString()); + return S.toString(GridCacheQueryResponse.class, this); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java index 4c91ea7..304d031 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandler.java @@ -17,6 +17,28 @@ package org.apache.ignite.internal.processors.cache.query.continuous; +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NavigableSet; +import java.util.Set; +import java.util.TreeMap; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.atomic.AtomicLong; +import javax.cache.event.CacheEntryEvent; +import javax.cache.event.CacheEntryEventFilter; +import javax.cache.event.CacheEntryUpdatedListener; +import javax.cache.event.EventType; import org.apache.ignite.IgniteCache; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; @@ -39,7 +61,6 @@ import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.GridCacheDeploymentManager; import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicUpdateFuture; import org.apache.ignite.internal.processors.cache.query.CacheQueryType; -import org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager; import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager.JCacheQueryLocalListener; import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager.JCacheQueryRemoteFilter; import org.apache.ignite.internal.processors.continuous.GridContinuousBatch; @@ -61,22 +82,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jsr166.ConcurrentLinkedDeque8; -import javax.cache.event.CacheEntryEvent; -import javax.cache.event.CacheEntryEventFilter; -import javax.cache.event.CacheEntryUpdatedListener; -import javax.cache.event.EventType; -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.atomic.AtomicLong; - import static org.apache.ignite.events.EventType.EVT_CACHE_QUERY_EXECUTED; import static org.apache.ignite.events.EventType.EVT_CACHE_QUERY_OBJECT_READ; -import static org.apache.ignite.internal.processors.cache.GridCacheIoManager.registerUnhandledException; /** * Continuous query handler. @@ -681,17 +688,8 @@ public class CacheContinuousQueryHandler<K, V> implements GridContinuousHandler catch (IgniteCheckedException ex) { if (ignoreClsNotFound) assert internal; - else { - String shortMsg = "Failed to unmarshal entry."; - - U.error(ctx.log(getClass()), shortMsg, ex); - - GridCacheQueryManager qryMgr = cctx.queries(); - - qryMgr.onUnhandledException(); - - registerUnhandledException(cctx, shortMsg, ex); - } + else + U.error(ctx.log(getClass()), "Failed to unmarshal entry.", ex); } } http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.java deleted file mode 100644 index 82f5f09..0000000 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * 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; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicInteger; -import javax.cache.Cache; -import javax.cache.event.CacheEntryEvent; -import javax.cache.event.CacheEntryUpdatedListener; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.IgniteException; -import org.apache.ignite.cache.query.ContinuousQuery; -import org.apache.ignite.cache.query.QueryCursor; -import org.apache.ignite.cache.query.ScanQuery; -import org.apache.ignite.cache.query.annotations.QuerySqlField; -import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.events.Event; -import org.apache.ignite.events.EventType; -import org.apache.ignite.events.UnhandledExceptionEvent; -import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.internal.processors.cache.query.GridCacheQueryMetricsAdapter; -import org.apache.ignite.internal.util.lang.GridAbsPredicate; -import org.apache.ignite.internal.util.typedef.X; -import org.apache.ignite.lang.IgniteBiPredicate; -import org.apache.ignite.lang.IgnitePredicate; -import org.apache.ignite.testframework.GridTestUtils; -import org.apache.ignite.thread.IgniteThread; - -/** - * Checks behavior on exception while unmarshalling key for continuous query. - */ -public class IgniteCacheP2pUnmarshallingContinuousQueryErrorTest extends IgniteCacheP2pUnmarshallingErrorTest { - /** - * {@inheritDoc} - */ - @Override protected int gridCount() { - return 3; - } - - /** Used inside InitialQuery listener. */ - private static final CountDownLatch latch = new CountDownLatch(1); - - /** Node where unmarshalling fails with exceptions. */ - private static volatile String failNode; - - /** Used to count UnhandledExceptionEvents at client node. */ - private static final AtomicInteger cnt = new AtomicInteger(); - - /** - * {@inheritDoc} - */ - @Override protected CacheConfiguration cacheConfiguration(String gridName) throws Exception { - CacheConfiguration cacheCfg = super.cacheConfiguration(gridName); - - cacheCfg.setStatisticsEnabled(true); - - return cacheCfg; - } - - /** - * {@inheritDoc} - */ - @Override public void testResponseMessageOnUnmarshallingFailed() throws Exception { - IgniteEx client = grid(0); - IgniteEx node1 = grid(1); - IgniteEx node2 = grid(2); - - assert client.configuration().isClientMode() && - !node1.configuration().isClientMode() && - !node2.configuration().isClientMode(); - - failNode = client.name(); - - client.events().localListen(new IgnitePredicate<Event>() { - @Override public boolean apply(Event evt) { - UnhandledExceptionEvent uex = (UnhandledExceptionEvent)evt; - - assertTrue(X.getFullStackTrace(uex.getException()). - contains("IOException: Class can not be unmarshalled")); - - cnt.incrementAndGet(); - - return true; - } - }, EventType.EVT_UNHANDLED_EXCEPTION); - - node1.events().localListen(new IgnitePredicate<Event>() { - @Override public boolean apply(Event evt) { - fail("This line should newer calls."); - - return true; - } - }, EventType.EVT_UNHANDLED_EXCEPTION); - - ContinuousQuery<TestKey, String> qry = new ContinuousQuery<>(); - - qry.setInitialQuery(new ScanQuery<>(new IgniteBiPredicate<TestKey, String>() { - @Override public boolean apply(TestKey key, String val) { - latch.countDown(); // Gives guarantee query initialized. - - return true; - } - })); - - qry.setLocalListener(new CacheEntryUpdatedListener<TestKey, String>() { - @Override public void onUpdated(Iterable<CacheEntryEvent<? extends TestKey, ? extends String>> evts) { - fail("This line should newer calls."); - } - }); - - validate( - 0,//execs - 0,//evts - 0,//fails - client, - node1, - node2); - - // Put element before creating QueryCursor. - putPrimary(node1); - - try (QueryCursor<Cache.Entry<TestKey, String>> cur = client.cache(null).query(qry)) { - latch.await(); - - validate( - 1,//execs - 0,//evts - 0,//fails - client, - node1, - node2); - - putPrimary(node1); - - validate( - 1,//execs - 1,//evts - 1,//fails - client, - node1, - node2); - - putPrimary(node2); - - validate( - 1,//execs - 2,//evts - 2,//fails - client, - node1, - node2); - } - } - - /** - * @param ignite Ignite. - */ - private void putPrimary(IgniteEx ignite) { - IgniteCache<TestKey, Object> cache = ignite.cache(null); - - cache.put(generateNodeKeys(ignite, cache), "value"); - } - - /** - * @param execs Executions. - * @param evts Events. - * @param failsNum Fails number. - * @param client Client. - * @param node1 Node 1. - * @param node2 Node 2. - */ - private void validate(final int execs, final int evts, final int failsNum, final IgniteEx client, IgniteEx node1, - IgniteEx node2) throws Exception { - assertTrue(GridTestUtils.waitForCondition(new GridAbsPredicate() { - @Override public boolean apply() { - return client.cache(null).queryMetrics().fails() == failsNum; - } - }, 5_000)); - - assertEquals(evts, cnt.intValue()); - - validateCacheQueryMetrics(client, execs, failsNum); - validateCacheQueryMetrics(node1, 0, 0); - validateCacheQueryMetrics(node2, 0, 0); - } - - /** - * @param ignite Ignite. - * @param executions Executions. - * @param fails Fails. - */ - private void validateCacheQueryMetrics(IgniteEx ignite, int executions, int fails) { - IgniteCache<Object, Object> cache = ignite.cache(null); - - GridCacheQueryMetricsAdapter metr = (GridCacheQueryMetricsAdapter)cache.queryMetrics(); - - assertEquals(metr.executions(), executions); - - assertEquals(metr.fails(), fails); - } - - /** - * @param node Node. - * @param cache Cache. - */ - private TestKey generateNodeKeys(IgniteEx node, IgniteCache<TestKey, Object> cache) { - - ClusterNode locNode = node.localNode(); - - for (int ind = 0; ind < 100_000; ind++) { - TestKey key = new TestKey("key" + ind); - - if (affinity(cache).isPrimary(locNode, key)) - return key; - } - - throw new IgniteException("Unable to find key keys as primary for cache."); - } - - /** - * - * */ - private static class TestKey implements Externalizable { - /** - * Field. - */ - @QuerySqlField(index = true) - private String field; - - /** - * Required by {@link Externalizable}. - */ - public TestKey() { - } - - /** - * @param field Test key 1. - */ - public TestKey(String field) { - this.field = field; - } - - /** - * {@inheritDoc} - */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.TestKey key = (IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.TestKey)o; - - return !(field != null ? !field.equals(key.field) : key.field != null); - } - - /** - * {@inheritDoc} - */ - @Override public int hashCode() { - return field != null ? field.hashCode() : 0; - } - - /** - * {@inheritDoc} - */ - @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeObject(field); - } - - /** - * {@inheritDoc} - */ - @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - field = (String)in.readObject(); - - if (((IgniteThread)Thread.currentThread()).getGridName().equals(failNode)) - throw new IOException("Class can not be unmarshalled."); - - } - } -} http://git-wip-us.apache.org/repos/asf/ignite/blob/e821dc00/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheP2pUnmarshallingErrorTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheP2pUnmarshallingErrorTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheP2pUnmarshallingErrorTestSuite.java index b45d134..dfc96dc 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheP2pUnmarshallingErrorTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheP2pUnmarshallingErrorTestSuite.java @@ -19,7 +19,10 @@ package org.apache.ignite.testsuites; import java.util.Set; import junit.framework.TestSuite; -import org.apache.ignite.internal.processors.cache.*; +import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingErrorTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingNearErrorTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingRebalanceErrorTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheP2pUnmarshallingTxErrorTest; import org.apache.ignite.testframework.GridTestUtils; /** @@ -46,7 +49,6 @@ public class IgniteCacheP2pUnmarshallingErrorTestSuite extends TestSuite { GridTestUtils.addTestIfNeeded(suite, IgniteCacheP2pUnmarshallingNearErrorTest.class, ignoredTests); GridTestUtils.addTestIfNeeded(suite, IgniteCacheP2pUnmarshallingRebalanceErrorTest.class, ignoredTests); GridTestUtils.addTestIfNeeded(suite, IgniteCacheP2pUnmarshallingTxErrorTest.class, ignoredTests); - GridTestUtils.addTestIfNeeded(suite, IgniteCacheP2pUnmarshallingContinuousQueryErrorTest.class, ignoredTests); return suite; }
