# sprint-2 fix for ignite-523

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

Branch: refs/heads/ignite-443
Commit: 38faddaebf257eecdb756441ab3f9e267369c250
Parents: 38a99a3
Author: sboikov <sboi...@gridgain.com>
Authored: Fri Mar 20 17:23:22 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Fri Mar 20 17:23:22 2015 +0300

----------------------------------------------------------------------
 .../continuous/CacheContinuousQueryHandler.java |  3 ++
 ...ridCacheContinuousQueryAbstractSelfTest.java | 29 ++++++++++++++++++--
 2 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/38faddae/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 c475a30..72fd192 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
@@ -200,6 +200,9 @@ class CacheContinuousQueryHandler<K, V> implements 
GridContinuousHandler {
                     try {
                         notify = rmtFilter.evaluate(evt);
                     }
+                    catch (Exception e) {
+                        
U.error(cctx.logger(CacheContinuousQueryHandler.class), "CacheEntryEventFilter 
failed: " + e);
+                    }
                     finally {
                         cctx.forceFlags(f);
                     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/38faddae/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
index b19a6ca..080a5a3 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
@@ -316,6 +316,32 @@ public abstract class 
GridCacheContinuousQueryAbstractSelfTest extends GridCommo
     /**
      * @throws Exception If failed.
      */
+    public void testFilterException() throws Exception {
+        IgniteCache<Integer, Integer> cache = grid(0).jcache(null);
+
+        ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>();
+
+        qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() 
{
+            @Override public void onUpdated(Iterable<CacheEntryEvent<? extends 
Integer, ? extends Integer>> evts) {
+                // No-op.
+            }
+        });
+
+        qry.setRemoteFilter(new CacheEntryEventFilter<Integer, Integer>() {
+            @Override public boolean evaluate(CacheEntryEvent<? extends 
Integer, ? extends Integer> evt) {
+                throw new RuntimeException("Test error.");
+            }
+        });
+
+        try (QueryCursor<Cache.Entry<Integer, Integer>> ignored = 
cache.query(qry)) {
+            for (int i = 0; i < 100; i++)
+                cache.put(i, i);
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
     public void testEntriesByFilter() throws Exception {
         IgniteCache<Integer, Integer> cache = grid(0).jcache(null);
 
@@ -345,8 +371,7 @@ public abstract class 
GridCacheContinuousQueryAbstractSelfTest extends GridCommo
         });
 
         qry.setRemoteFilter(new CacheEntryEventFilter<Integer,Integer>() {
-            @Override
-            public boolean evaluate(CacheEntryEvent<? extends Integer,? 
extends Integer> evt) {
+            @Override public boolean evaluate(CacheEntryEvent<? extends 
Integer,? extends Integer> evt) {
                 return evt.getKey() > 2;
             }
         });

Reply via email to