You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/05/19 15:46:05 UTC
incubator-ignite git commit: # Review.
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 <vo...@gridgain.com>
Authored: Tue May 19 16:45:28 2015 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
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);
}
/**