You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2016/03/01 12:09:46 UTC
[20/20] ignite git commit: Merge branch 'master' into ignite-1186
Merge branch 'master' into ignite-1186
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/846e8e5d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/846e8e5d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/846e8e5d
Branch: refs/heads/ignite-1186
Commit: 846e8e5d46fcf206369a6dacd2b56a45ac33b1cd
Parents: 5455a9f 8917269
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Tue Mar 1 13:41:48 2016 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Tue Mar 1 14:09:35 2016 +0300
----------------------------------------------------------------------
.../internal/binary/BinaryClassDescriptor.java | 2 +-
.../processors/cache/GridCacheProcessor.java | 20 +
.../processors/cache/GridCacheUtils.java | 15 +
.../cache/affinity/GridCacheAffinityImpl.java | 7 +-
.../CacheContinuousQueryHandlerV2.java | 11 +-
.../continuous/CacheContinuousQueryManager.java | 2 +-
.../processors/query/GridQueryProcessor.java | 13 +-
.../ignite/internal/visor/cache/VisorCache.java | 2 +-
.../cache/VisorCacheAggregatedMetrics.java | 113 +-
.../internal/visor/cache/VisorCacheMetrics.java | 88 +-
.../cache/VisorCacheMetricsCollectorTask.java | 21 +-
.../visor/cache/VisorCacheMetricsV2.java | 66 +
.../internal/visor/cache/VisorCacheV2.java | 2 +-
.../ignite/resources/JobContextResource.java | 4 +-
.../org/apache/ignite/spi/IgniteSpiAdapter.java | 15 +
.../ignite/spi/IgniteSpiConsistencyChecked.java | 8 +
.../ignite/spi/discovery/tcp/ClientImpl.java | 6 +-
.../ignite/spi/discovery/tcp/ServerImpl.java | 2 +-
.../TcpDiscoveryMulticastIpFinder.java | 1 +
.../spi/swapspace/file/FileSwapSpaceSpi.java | 2 +
.../spi/swapspace/noop/NoopSwapSpaceSpi.java | 2 +
.../cache/GridCacheAbstractFullApiSelfTest.java | 10 +-
...ridCacheSwapSpaceSpiConsistencySelfTest.java | 146 +
.../IgniteCacheConfigVariationsFullApiTest.java | 5851 ++++++++++++++++++
...acheContinuousQueryRandomOperationsTest.java | 51 +
.../GridSwapSpaceSpiConsistencySelfTest.java | 131 +
.../configvariations/CacheStartMode.java | 29 +
.../configvariations/ConfigFactory.java | 39 +
.../configvariations/ConfigParameter.java | 34 +
.../configvariations/ConfigVariations.java | 346 ++
.../ConfigVariationsFactory.java | 197 +
.../ConfigVariationsTestSuiteBuilder.java | 382 ++
.../IgniteConfigVariationsTestSuite.java | 50 +
.../configvariations/Parameters.java | 377 ++
.../configvariations/VariationsIterator.java | 174 +
.../configvariations/VariationsTestsConfig.java | 161 +
.../testframework/junits/GridAbstractTest.java | 43 +-
...IgniteCacheConfigVariationsAbstractTest.java | 583 ++
.../IgniteConfigVariationsAbstractTest.java | 420 ++
.../ConfigVariationsTestSuiteBuilderTest.java | 112 +
.../testframework/test/ParametersTest.java | 87 +
.../test/VariationsIteratorTest.java | 156 +
.../ignite/testsuites/IgniteBasicTestSuite.java | 8 +
...heBasicConfigVariationsFullApiTestSuite.java | 41 +
.../testsuites/IgniteCacheTestSuite5.java | 2 +
.../IgniteSpiSwapSpaceSelfTestSuite.java | 2 +
.../processors/query/h2/IgniteH2Indexing.java | 104 +-
.../cache/CacheQueryNewClientSelfTest.java | 108 +
.../IgniteCacheQuerySelfTestSuite.java | 6 +-
.../commands/cache/VisorCacheCommand.scala | 30 +-
.../yardstick/IgniteBenchmarkArguments.java | 11 +
.../org/apache/ignite/yardstick/IgniteNode.java | 2 +
.../cache/IgniteCacheAbstractBenchmark.java | 54 +
53 files changed, 9994 insertions(+), 155 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/846e8e5d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV2.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV2.java
index 6fc2041,0000000..dbe2a46
mode 100644,000000..100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryHandlerV2.java
@@@ -1,217 -1,0 +1,222 @@@
+/*
+ * 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.query.continuous;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.UUID;
+import javax.cache.configuration.Factory;
+import javax.cache.event.CacheEntryEventFilter;
+import javax.cache.event.CacheEntryUpdatedListener;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager.JCacheQueryRemoteFilter;
+import org.apache.ignite.internal.processors.continuous.GridContinuousHandler;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Continuous query handler V2 version. Contains {@link Factory} for remote listener.
+ */
+public class CacheContinuousQueryHandlerV2<K, V> extends CacheContinuousQueryHandler<K, V> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Remote filter factory. */
+ private Factory<? extends CacheEntryEventFilter> rmtFilterFactory;
+
+ /** Deployable object for filter factory. */
+ private DeployableObject rmtFilterFactoryDep;
+
+ /** Event types for JCache API. */
+ private byte types = 0;
+
+ /** */
+ protected transient CacheEntryEventFilter filter;
+
+ /**
+ * Required by {@link Externalizable}.
+ */
+ public CacheContinuousQueryHandlerV2() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param cacheName Cache name.
+ * @param topic Topic for ordered messages.
+ * @param locLsnr Local listener.
+ * @param rmtFilterFactory Remote filter factory.
+ * @param internal Internal flag.
+ * @param notifyExisting Notify existing flag.
+ * @param oldValRequired Old value required flag.
+ * @param sync Synchronous flag.
+ * @param ignoreExpired Ignore expired events flag.
+ * @param skipPrimaryCheck Whether to skip primary check for REPLICATED cache.
+ * @param taskHash Task name hash code.
+ * @param locCache {@code True} if local cache.
+ * @param keepBinary Keep binary flag.
+ * @param types Event types.
+ */
+ public CacheContinuousQueryHandlerV2(
+ String cacheName,
+ Object topic,
+ CacheEntryUpdatedListener<K, V> locLsnr,
+ Factory<? extends CacheEntryEventFilter<K, V>> rmtFilterFactory,
+ boolean internal,
+ boolean notifyExisting,
+ boolean oldValRequired,
+ boolean sync,
+ boolean ignoreExpired,
+ int taskHash,
+ boolean skipPrimaryCheck,
+ boolean locCache,
+ boolean keepBinary,
+ boolean ignoreClsNotFound,
+ @Nullable Byte types) {
+ super(cacheName,
+ topic,
+ locLsnr,
+ null,
+ internal,
+ notifyExisting,
+ oldValRequired,
+ sync,
+ ignoreExpired,
+ taskHash,
+ skipPrimaryCheck,
+ locCache,
+ keepBinary,
+ ignoreClsNotFound);
+
+ assert rmtFilterFactory != null;
+
+ this.rmtFilterFactory = rmtFilterFactory;
+
- if (types != null)
++ if (types != null) {
++ assert types != 0;
++
+ this.types = types;
++ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public CacheEntryEventFilter getEventFilter() {
+ if (filter == null) {
+ assert rmtFilterFactory != null;
+
++ Factory<? extends CacheEntryEventFilter> factory = rmtFilterFactory;
++
+ if (types != 0)
- rmtFilterFactory = new JCacheRemoteQueryFactory(rmtFilterFactory, types);
++ factory = new JCacheRemoteQueryFactory(rmtFilterFactory, types);
+
- filter = rmtFilterFactory.create();
++ filter = factory.create();
+ }
+
+ return filter;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void p2pMarshal(GridKernalContext ctx) throws IgniteCheckedException {
+ super.p2pMarshal(ctx);
+
+ if (rmtFilterFactory != null && !U.isGrid(rmtFilterFactory.getClass()))
+ rmtFilterFactoryDep = new DeployableObject(rmtFilterFactory, ctx);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void p2pUnmarshal(UUID nodeId, GridKernalContext ctx) throws IgniteCheckedException {
+ super.p2pUnmarshal(nodeId, ctx);
+
+ if (rmtFilterFactoryDep != null)
+ rmtFilterFactory = rmtFilterFactoryDep.unmarshal(nodeId, ctx);
+ }
+
+ /** {@inheritDoc} */
+ @Override public GridContinuousHandler clone() {
+ return super.clone();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(CacheContinuousQueryHandlerV2.class, this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ super.writeExternal(out);
+
+ boolean b = rmtFilterFactoryDep != null;
+
+ out.writeBoolean(b);
+
+ if (b)
+ out.writeObject(rmtFilterFactoryDep);
+ else
+ out.writeObject(rmtFilterFactory);
+
+ out.writeByte(types);
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ super.readExternal(in);
+
+ boolean b = in.readBoolean();
+
+ if (b)
+ rmtFilterFactoryDep = (DeployableObject)in.readObject();
+ else
+ rmtFilterFactory = (Factory)in.readObject();
+
+ types = in.readByte();
+ }
+
+ /**
+ *
+ */
+ private static class JCacheRemoteQueryFactory implements Factory<CacheEntryEventFilter> {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Factory. */
+ protected Factory<? extends CacheEntryEventFilter> impl;
+
+ /** */
+ private byte types;
+
+ /**
+ * @param impl Factory.
+ * @param types Types.
+ */
+ public JCacheRemoteQueryFactory(@Nullable Factory<? extends CacheEntryEventFilter> impl, byte types) {
+ this.impl = impl;
+ this.types = types;
+ }
+
+ /** {@inheritDoc} */
+ @Override public JCacheQueryRemoteFilter create() {
+ return new JCacheQueryRemoteFilter(impl != null ? impl.create() : null, types);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/846e8e5d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryManager.java
index 2a05865,409c1da..bfe70f1
--- 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
@@@ -608,235 -589,6 +608,235 @@@ public class CacheContinuousQueryManage
keepBinary,
ignoreClassNotFound);
+ return executeQuery0(locLsnr,
+ bufSize,
+ timeInterval,
+ autoUnsubscribe,
+ notifyExisting,
+ loc,
+ keepBinary,
+ hnd);
+ }
+
+
+ /**
+ * @param locLsnr Local listener.
+ * @param types JCache event types.
+ * @param bufSize Buffer size.
+ * @param timeInterval Time interval.
+ * @param autoUnsubscribe Auto unsubscribe flag.
+ * @param internal Internal flag.
+ * @param notifyExisting Notify existing flag.
+ * @param oldValRequired Old value required flag.
+ * @param sync Synchronous flag.
+ * @param ignoreExpired Ignore expired event flag.
+ * @param loc Local flag.
+ * @return Continuous routine ID.
+ * @throws IgniteCheckedException In case of error.
+ */
+ private UUID executeJCacheQueryFactory(CacheEntryUpdatedListener locLsnr,
+ final Factory<CacheEntryEventFilter> rmtFilterFactory,
+ byte types,
+ int bufSize,
+ long timeInterval,
+ boolean autoUnsubscribe,
+ boolean internal,
+ boolean notifyExisting,
+ boolean oldValRequired,
+ boolean sync,
+ boolean ignoreExpired,
+ boolean loc,
+ final boolean keepBinary,
+ boolean ignoreClassNotFound) throws IgniteCheckedException
+ {
+ assert types != 0 : types;
+
+ cctx.checkSecurity(SecurityPermission.CACHE_READ);
+
+ int taskNameHash = !internal && cctx.kernalContext().security().enabled() ?
+ cctx.kernalContext().job().currentTaskNameHash() : 0;
+
+ boolean skipPrimaryCheck = loc && cctx.config().getCacheMode() == CacheMode.REPLICATED && cctx.affinityNode();
+
+ boolean v2 = rmtFilterFactory != null && useV2Protocol(cctx.discovery().allNodes());
+
+ GridContinuousHandler hnd;
+
+ if (v2)
+ hnd = new CacheContinuousQueryHandlerV2(
+ cctx.name(),
+ TOPIC_CACHE.topic(topicPrefix, cctx.localNodeId(), seq.getAndIncrement()),
+ locLsnr,
+ rmtFilterFactory,
+ internal,
+ notifyExisting,
+ oldValRequired,
+ sync,
+ ignoreExpired,
+ taskNameHash,
+ skipPrimaryCheck,
+ cctx.isLocal(),
+ keepBinary,
+ ignoreClassNotFound,
+ types);
+ else {
+ JCacheQueryRemoteFilter jCacheFilter;
+
+ CacheEntryEventFilter filter = null;
+
+ if (rmtFilterFactory != null) {
+ filter = rmtFilterFactory.create();
+
+ if (!(filter instanceof Serializable))
+ throw new IgniteCheckedException("Topology has nodes of the old versions. In this case " +
+ "EntryEventFilter must implement java.io.Serializable interface. Filter: " + filter);
+ }
+
+ jCacheFilter = new JCacheQueryRemoteFilter(filter, types);
+
+ hnd = new CacheContinuousQueryHandler(
+ cctx.name(),
+ TOPIC_CACHE.topic(topicPrefix, cctx.localNodeId(), seq.getAndIncrement()),
+ locLsnr,
+ jCacheFilter,
+ internal,
+ notifyExisting,
+ oldValRequired,
+ sync,
+ ignoreExpired,
+ taskNameHash,
+ skipPrimaryCheck,
+ cctx.isLocal(),
+ keepBinary,
+ ignoreClassNotFound);
+ }
+
+ return executeQuery0(locLsnr,
+ bufSize,
+ timeInterval,
+ autoUnsubscribe,
+ notifyExisting,
+ loc,
+ keepBinary,
+ hnd);
+ }
+
+ /**
+ * @param locLsnr Local listener.
+ * @param bufSize Buffer size.
+ * @param timeInterval Time interval.
+ * @param autoUnsubscribe Auto unsubscribe flag.
+ * @param internal Internal flag.
+ * @param notifyExisting Notify existing flag.
+ * @param oldValRequired Old value required flag.
+ * @param sync Synchronous flag.
+ * @param ignoreExpired Ignore expired event flag.
+ * @param loc Local flag.
+ * @return Continuous routine ID.
+ * @throws IgniteCheckedException In case of error.
+ */
+ private UUID executeQueryWithFilterFactory(CacheEntryUpdatedListener locLsnr,
+ final Factory<? extends CacheEntryEventFilter> rmtFilterFactory,
+ int bufSize,
+ long timeInterval,
+ boolean autoUnsubscribe,
+ boolean internal,
+ boolean notifyExisting,
+ boolean oldValRequired,
+ boolean sync,
+ boolean ignoreExpired,
+ boolean loc,
+ final boolean keepBinary,
+ boolean ignoreClassNotFound) throws IgniteCheckedException
+ {
+ cctx.checkSecurity(SecurityPermission.CACHE_READ);
+
+ int taskNameHash = !internal && cctx.kernalContext().security().enabled() ?
+ cctx.kernalContext().job().currentTaskNameHash() : 0;
+
+ boolean skipPrimaryCheck = loc && cctx.config().getCacheMode() == CacheMode.REPLICATED && cctx.affinityNode();
+
+ boolean v2 = rmtFilterFactory != null && useV2Protocol(cctx.discovery().allNodes());
+
+ GridContinuousHandler hnd;
+
+ if (v2)
+ hnd = new CacheContinuousQueryHandlerV2(
+ cctx.name(),
+ TOPIC_CACHE.topic(topicPrefix, cctx.localNodeId(), seq.getAndIncrement()),
+ locLsnr,
+ rmtFilterFactory,
+ internal,
+ notifyExisting,
+ oldValRequired,
+ sync,
+ ignoreExpired,
+ taskNameHash,
+ skipPrimaryCheck,
+ cctx.isLocal(),
+ keepBinary,
+ ignoreClassNotFound,
- (byte)0);
++ null);
+ else {
+ CacheEntryEventFilter fltr = null;
+
+ if (rmtFilterFactory != null) {
+ fltr = rmtFilterFactory.create();
+
+ if (!(fltr instanceof CacheEntryEventSerializableFilter))
+ throw new IgniteCheckedException("Topology has nodes of the old versions. In this case " +
+ "EntryEventFilter should implement org.apache.ignite.cache.CacheEntryEventSerializableFilter " +
+ "interface. Filter: " + fltr);
+ }
+
+ hnd = new CacheContinuousQueryHandler(
+ cctx.name(),
+ TOPIC_CACHE.topic(topicPrefix, cctx.localNodeId(), seq.getAndIncrement()),
+ locLsnr,
+ (CacheEntryEventSerializableFilter)fltr,
+ internal,
+ notifyExisting,
+ oldValRequired,
+ sync,
+ ignoreExpired,
+ taskNameHash,
+ skipPrimaryCheck,
+ cctx.isLocal(),
+ keepBinary,
+ ignoreClassNotFound);
+ }
+
+ return executeQuery0(locLsnr,
+ bufSize,
+ timeInterval,
+ autoUnsubscribe,
+ notifyExisting,
+ loc,
+ keepBinary,
+ hnd);
+ }
+
+ /**
+ * @param locLsnr Local listener.
+ * @param bufSize Buffer size.
+ * @param timeInterval Time interval.
+ * @param autoUnsubscribe Auto unsubscribe flag.
+ * @param notifyExisting Notify existing flag.
+ * @param loc Local flag.
+ * @param keepBinary Keep binary.
+ * @param hnd Handler.
+ * @return Continuous routine ID.
+ * @throws IgniteCheckedException In case of error.
+ */
+ private UUID executeQuery0(CacheEntryUpdatedListener locLsnr,
+ int bufSize,
+ long timeInterval,
+ boolean autoUnsubscribe,
+ boolean notifyExisting,
+ boolean loc,
+ final boolean keepBinary,
+ final GridContinuousHandler hnd)
+ throws IgniteCheckedException {
IgnitePredicate<ClusterNode> pred = (loc || cctx.config().getCacheMode() == CacheMode.LOCAL) ?
F.nodeForNodeId(cctx.localNodeId()) : F.<ClusterNode>alwaysTrue();
http://git-wip-us.apache.org/repos/asf/ignite/blob/846e8e5d/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
index 23b9d85,62ed66f..c18cf35
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
@@@ -28,11 -28,11 +28,14 @@@ import java.util.SortedMap
import java.util.TreeMap;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
++import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import javax.cache.Cache;
import javax.cache.configuration.Factory;
import javax.cache.event.CacheEntryEvent;
++import javax.cache.event.CacheEntryEventFilter;
++import javax.cache.event.CacheEntryListenerException;
import javax.cache.event.CacheEntryUpdatedListener;
import javax.cache.integration.CacheLoaderException;
import javax.cache.integration.CacheWriterException;
@@@ -40,7 -40,7 +43,9 @@@ import javax.cache.processor.EntryProce
import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
++import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.CacheAtomicityMode;
++import org.apache.ignite.cache.CacheEntryEventSerializableFilter;
import org.apache.ignite.cache.CacheMemoryMode;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.affinity.Affinity;
@@@ -55,6 -55,6 +60,7 @@@ import org.apache.ignite.internal.util.
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
++import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
@@@ -132,6 -132,6 +138,51 @@@ public class CacheContinuousQueryRandom
/**
* @throws Exception If failed.
*/
++ public void testFilterAndFactoryProvided() throws Exception {
++ CacheConfiguration<Object, Object> ccfg = cacheConfiguration(PARTITIONED,
++ 1,
++ ATOMIC,
++ ONHEAP_TIERED,
++ false);
++
++ final IgniteCache<Object, Object> cache = grid(0).getOrCreateCache(ccfg);
++
++ try {
++ final ContinuousQuery qry = new ContinuousQuery();
++
++ qry.setRemoteFilterFactory(new Factory<CacheEntryEventFilter>() {
++ @Override public CacheEntryEventFilter create() {
++ return null;
++ }
++ });
++
++ qry.setRemoteFilter(new CacheEntryEventSerializableFilter() {
++ @Override public boolean evaluate(CacheEntryEvent event) throws CacheEntryListenerException {
++ return false;
++ }
++ });
++
++ qry.setLocalListener(new CacheEntryUpdatedListener() {
++ @Override public void onUpdated(Iterable iterable) throws CacheEntryListenerException {
++ // No-op.
++ }
++ });
++
++ GridTestUtils.assertThrows(log, new Callable<Object>() {
++ @Override public Object call() throws Exception {
++ return cache.query(qry);
++ }
++ }, IgniteException.class, null);
++
++ }
++ finally {
++ cache.destroy();
++ }
++ }
++
++ /**
++ * @throws Exception If failed.
++ */
public void testAtomicClient() throws Exception {
CacheConfiguration<Object, Object> ccfg = cacheConfiguration(PARTITIONED,
1,
http://git-wip-us.apache.org/repos/asf/ignite/blob/846e8e5d/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
----------------------------------------------------------------------