Repository: incubator-ignite Updated Branches: refs/heads/ignite-gg-9614 8deaf562a -> a765d2a80
# Review. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/a765d2a8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a765d2a8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a765d2a8 Branch: refs/heads/ignite-gg-9614 Commit: a765d2a80d6c5f4ed9c9a82083446f4baae65322 Parents: 8deaf56 Author: vozerov-gridgain <[email protected]> Authored: Tue May 19 16:45:28 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Tue May 19 16:45:28 2015 +0300 ---------------------------------------------------------------------- .../internal/GridEventConsumeHandler.java | 1 + .../interop/GridLifecycleAwareEventFilter.java | 2 ++ .../GridLifecycleAwareLocalEventListener.java | 1 + .../eventstorage/GridEventStorageManager.java | 26 +++++++++++--------- 4 files changed, 19 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a765d2a8/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java index cf6d605..c63b50d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/GridEventConsumeHandler.java @@ -193,6 +193,7 @@ class GridEventConsumeHandler implements GridContinuousHandler { if (lsnr != null) ctx.event().removeLocalEventListener(lsnr, types); + // TODO: Not safe. Exception thrown from filter close will tiled in not-closed cb. if (filter instanceof GridLifecycleAwareEventFilter) ((GridLifecycleAwareEventFilter)filter).close(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a765d2a8/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareEventFilter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareEventFilter.java b/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareEventFilter.java index 13d6616..c54954c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareEventFilter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareEventFilter.java @@ -24,10 +24,12 @@ import org.apache.ignite.lang.*; /** * Special version of predicate for events with initialize/close callbacks. */ +// TODO: Rename to GridInterop*. public interface GridLifecycleAwareEventFilter<E extends Event> extends IgnitePredicate<E> { /** * Initializes the filter. */ + // TODO: Accept GridContext, not Ignite. public void initialize(Ignite ignite); /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a765d2a8/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareLocalEventListener.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareLocalEventListener.java b/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareLocalEventListener.java index f5b363e..aac8bbf 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareLocalEventListener.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/interop/GridLifecycleAwareLocalEventListener.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.interop; /** * Special version of listener for events with close callbacks. */ +// TODO: Rename to GridInterop*. public interface GridLifecycleAwareLocalEventListener { /** * Closes the listener. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a765d2a8/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java index bd37b4f..fc26bab 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java @@ -653,10 +653,10 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi> if (lsnr instanceof UserListenerWrapper) { - UserListenerWrapper wrapper = (UserListenerWrapper)lsnr; + IgnitePredicate p = ((UserListenerWrapper)lsnr).listener(); - if (wrapper.listener() instanceof GridLifecycleAwareLocalEventListener) - ((GridLifecycleAwareLocalEventListener)wrapper.listener()).close(); + if (p instanceof GridLifecycleAwareLocalEventListener) + ((GridLifecycleAwareLocalEventListener)p).close(); } return found; @@ -761,16 +761,20 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi> public <T extends Event> Collection<T> localEvents(IgnitePredicate<T> p) { assert p != null; - if (p instanceof GridLifecycleAwareEventFilter) - ((GridLifecycleAwareEventFilter)p).initialize(ctx.grid()); + if (p instanceof GridLifecycleAwareEventFilter) { + GridLifecycleAwareEventFilter p0 = (GridLifecycleAwareEventFilter)p; - try { - return getSpi().localEvents(p); - } - finally { - if (p instanceof GridLifecycleAwareEventFilter) - ((GridLifecycleAwareEventFilter)p).close(); + p0.initialize(ctx.grid()); + + try { + return getSpi().localEvents(p0); + } + finally { + p0.close(); + } } + else + return getSpi().localEvents(p); } /**
