You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2015/03/04 19:16:23 UTC

[1/5] incubator-ignite git commit: futures: api cleanup

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-futures-clenup [created] c1b46951f


futures: api cleanup


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

Branch: refs/heads/ignite-futures-clenup
Commit: 680b0bac27ccc159b20e509d6a62ca8fc3631b9a
Parents: 9b2a034
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed Mar 4 18:46:24 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed Mar 4 18:46:24 2015 +0300

----------------------------------------------------------------------
 .../ComputeFibonacciContinuationExample.java    | 12 ++--
 .../examples/datagrid/CacheApiExample.java      |  2 +-
 .../examples/ScalarContinuationExample.scala    | 12 ++--
 .../ignite/internal/IgniteInternalFuture.java   |  8 ---
 .../util/future/GridFinishedFuture.java         |  5 --
 .../util/future/GridFinishedFutureEx.java       |  5 --
 .../internal/util/future/GridFutureAdapter.java | 22 --------
 .../util/future/GridFutureAdapterEx.java        | 17 ------
 .../internal/util/future/IgniteFutureImpl.java  |  9 +--
 .../visor/cache/VisorCacheClearTask.java        |  2 +-
 .../org/apache/ignite/lang/IgniteFuture.java    |  9 +--
 .../internal/GridMultipleJobsSelfTest.java      |  2 +-
 .../GridTaskFutureImplStopGridSelfTest.java     |  2 +-
 .../internal/GridTaskListenerSelfTest.java      |  2 +-
 .../GridCacheAsyncOperationsLimitSelfTest.java  |  3 +-
 .../cache/GridCachePutAllFailoverSelfTest.java  |  6 +-
 .../util/future/IgniteFutureImplTest.java       | 58 +++-----------------
 .../loadtests/colocation/GridTestMain.java      |  2 +-
 ...GridJobExecutionLoadTestClientSemaphore.java |  2 +-
 ...JobExecutionSingleNodeSemaphoreLoadTest.java |  2 +-
 .../mergesort/GridMergeSortLoadTask.java        |  2 +-
 .../GridCacheStoreValueBytesTest.java           |  4 +-
 .../processors/schedule/ScheduleFutureImpl.java | 22 ++------
 .../schedule/GridScheduleSelfTest.java          |  4 +-
 24 files changed, 41 insertions(+), 173 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/examples/src/main/java/org/apache/ignite/examples/computegrid/ComputeFibonacciContinuationExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/computegrid/ComputeFibonacciContinuationExample.java b/examples/src/main/java/org/apache/ignite/examples/computegrid/ComputeFibonacciContinuationExample.java
index 5665b9e..1dc96e5 100644
--- a/examples/src/main/java/org/apache/ignite/examples/computegrid/ComputeFibonacciContinuationExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/computegrid/ComputeFibonacciContinuationExample.java
@@ -138,9 +138,9 @@ public final class ComputeFibonacciContinuationExample {
                     compute.apply(new FibonacciClosure(nodeFilter), n - 1);
 
                     ComputeTaskFuture<BigInteger> futVal = compute.future();
-                    
+
                     fut1 = locMap.putIfAbsent(n - 1, futVal);
-                    
+
                     if (fut1 == null)
                         fut1 = futVal;
                 }
@@ -150,9 +150,9 @@ public final class ComputeFibonacciContinuationExample {
                     compute.apply(new FibonacciClosure(nodeFilter), n - 2);
 
                     ComputeTaskFuture<BigInteger> futVal = compute.<BigInteger>future();
-                    
+
                     fut2 = locMap.putIfAbsent(n - 2, futVal);
-                    
+
                     if (fut2 == null)
                         fut2 = futVal;
                 }
@@ -178,8 +178,8 @@ public final class ComputeFibonacciContinuationExample {
                     jobCtx.holdcc();
 
                     // Attach the same listener to both futures.
-                    fut1.listenAsync(lsnr);
-                    fut2.listenAsync(lsnr);
+                    fut1.listen(lsnr);
+                    fut2.listen(lsnr);
 
                     return null;
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheApiExample.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheApiExample.java b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheApiExample.java
index d702555..1bec481 100644
--- a/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheApiExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheApiExample.java
@@ -86,7 +86,7 @@ public class CacheApiExample {
         IgniteFuture<String> fut = asyncCache.future();
 
         //Asynchronously wait for result.
-        fut.listenAsync(new IgniteInClosure<IgniteFuture<String>>() {
+        fut.listen(new IgniteInClosure<IgniteFuture<String>>() {
             @Override
             public void apply(IgniteFuture<String> fut) {
                 try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarContinuationExample.scala
----------------------------------------------------------------------
diff --git a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarContinuationExample.scala b/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarContinuationExample.scala
index 9067918..9a9e666 100644
--- a/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarContinuationExample.scala
+++ b/examples/src/main/scala/org/apache/ignite/scalar/examples/ScalarContinuationExample.scala
@@ -122,9 +122,9 @@ class FibonacciClosure (
                 comp.apply(new FibonacciClosure(excludeNodeId), n - 1)
 
                 val futVal = comp.future[BigInteger]()
-                
+
                 fut1 = store.putIfAbsent(n - 1, futVal)
-                
+
                 if (fut1 == null)
                     fut1 = futVal
             }
@@ -134,9 +134,9 @@ class FibonacciClosure (
                 comp.apply(new FibonacciClosure(excludeNodeId), n - 2)
 
                 val futVal = comp.future[BigInteger]()
-                
+
                 fut2 = store.putIfAbsent(n - 2, futVal)
-                
+
                 if (fut2 == null)
                     fut2 = futVal
             }
@@ -152,8 +152,8 @@ class FibonacciClosure (
                 }
 
                 // Attach the same listener to both futures.
-                fut1.listenAsync(lsnr)
-                fut2.listenAsync(lsnr)
+                fut1.listen(lsnr)
+                fut2.listen(lsnr)
 
                 // Hold (suspend) job execution.
                 // It will be resumed in listener above via 'callcc()' call

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index 6f9be27..ed4a820 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -172,14 +172,6 @@ public interface IgniteInternalFuture<R> {
     public void listenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<R>> lsnr);
 
     /**
-     * Removes given listeners from the future. If no listener is passed in, then all listeners
-     * will be removed.
-     *
-     * @param lsnr Listeners to remove.
-     */
-    public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<R>>... lsnr);
-
-    /**
      * Make a chained future to convert result of this future (when complete) into a new format.
      * It is guaranteed that done callback will be called only ONCE.
      *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
index 32924f2..c2f1b89 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
@@ -183,11 +183,6 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T>, Externali
     }
 
     /** {@inheritDoc} */
-    @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<T>>... lsnr) {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
     @Override public <R> IgniteInternalFuture<R> chain(final IgniteClosure<? super IgniteInternalFuture<T>, R> doneCb) {
         GridFutureAdapter<R> fut = new GridFutureAdapter<R>(ctx, syncNotify) {
             @Override public String toString() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
index f7eb9d9..84323be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
@@ -165,11 +165,6 @@ public class GridFinishedFutureEx<T> implements IgniteInternalFuture<T>, Externa
             lsnr.apply(this);
     }
 
-    /** {@inheritDoc} */
-    @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<T>>... lsnr) {
-        // No-op.
-    }
-
     /**
      * @return {@code True} if future failed.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
index 5a7dcdd..4beb89a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
@@ -300,28 +300,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
     }
 
     /** {@inheritDoc} */
-    @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<R>>... lsnr) {
-        synchronized (mux) {
-            if (lsnrs == null)
-                return;
-
-            if (lsnr == null || lsnr.length == 0)
-                lsnrs.clear();
-            else {
-                // Iterate through the whole list, removing all occurrences, if any.
-                for (Iterator<IgniteInClosure<? super IgniteInternalFuture<R>>> it = lsnrs.iterator(); it.hasNext();) {
-                    IgniteInClosure<? super IgniteInternalFuture<R>> l1 = it.next();
-
-                    for (IgniteInClosure<? super IgniteInternalFuture<R>> l2 : lsnr)
-                        // Must be l1.equals(l2), not l2.equals(l1), because of the way listeners are added.
-                        if (l1.equals(l2))
-                            it.remove();
-                }
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb) {
         return new ChainFuture<>(ctx, syncNotify, this, doneCb);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
index 4836a90..ccce6e7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
@@ -250,23 +250,6 @@ public class GridFutureAdapterEx<R> extends AbstractQueuedSynchronizer implement
     }
 
     /** {@inheritDoc} */
-    @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteInternalFuture<R>>... lsnr) {
-        if (lsnr == null || lsnr.length == 0)
-            lsnrs.clear();
-        else {
-            // Iterate through the whole list, removing all occurrences, if any.
-            for (Iterator<IgniteInClosure<? super IgniteInternalFuture<R>>> it = lsnrs.iterator(); it.hasNext(); ) {
-                IgniteInClosure<? super IgniteInternalFuture<R>> l1 = it.next();
-
-                for (IgniteInClosure<? super IgniteInternalFuture<R>> l2 : lsnr)
-                    // Must be l1.equals(l2), not l2.equals(l1), because of the way listeners are added.
-                    if (l1.equals(l2))
-                        it.remove();
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb) {
         final GridFutureAdapterEx<T> fut = new GridFutureAdapterEx<T>() {
             @Override public String toString() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
index ded75ef..028616e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
@@ -91,19 +91,12 @@ public class IgniteFutureImpl<V> implements IgniteFuture<V> {
     }
 
     /** {@inheritDoc} */
-    @Override public void listenAsync(@Nullable final IgniteInClosure<? super IgniteFuture<V>> lsnr) {
+    @Override public void listen(@Nullable final IgniteInClosure<? super IgniteFuture<V>> lsnr) {
         if (lsnr != null)
             fut.listenAsync(new InternalFutureListener(lsnr));
     }
 
     /** {@inheritDoc} */
-    @Override public void stopListenAsync(IgniteInClosure<? super IgniteFuture<V>> lsnr) {
-        A.notNull(lsnr, "lsnr");
-
-        fut.stopListenAsync(new InternalFutureListener(lsnr));
-    }
-
-    /** {@inheritDoc} */
     @Override public <T> IgniteFuture<T> chain(final IgniteClosure<? super IgniteFuture<V>, T> doneCb) {
         IgniteInternalFuture<T> fut0 = fut.chain(new C1<IgniteInternalFuture<V>, T>() {
             @Override public T apply(IgniteInternalFuture<V> fut) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
index f341a04..ce725a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheClearTask.java
@@ -100,7 +100,7 @@ public class VisorCacheClearTask extends VisorOneNodeTask<String, IgniteBiTuple<
 
             jobCtx.holdcc();
 
-            fut.listenAsync(lsnr);
+            fut.listen(lsnr);
 
             return true;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java b/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
index 2fcf7f4..79b01e5 100644
--- a/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
@@ -153,14 +153,7 @@ public interface IgniteFuture<V> extends Future<V> {
      *
      * @param lsnr Listener closure to register. If not provided - this method is no-op.
      */
-    public void listenAsync(IgniteInClosure<? super IgniteFuture<V>> lsnr);
-
-    /**
-     * Removes given listener from the future.
-     *
-     * @param lsnr Listener to remove.
-     */
-    public void stopListenAsync(IgniteInClosure<? super IgniteFuture<V>> lsnr);
+    public void listen(IgniteInClosure<? super IgniteFuture<V>> lsnr);
 
     /**
      * Make a chained future to convert result of this future (when complete) into a new format.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleJobsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleJobsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleJobsSelfTest.java
index 565aaa7..62ade4e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleJobsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridMultipleJobsSelfTest.java
@@ -157,7 +157,7 @@ public class GridMultipleJobsSelfTest extends GridCommonAbstractTest {
                     if (cnt % LOG_MOD == 0)
                         X.println("Submitted jobs: " + cnt);
 
-                    fut.listenAsync(new CIX1<IgniteFuture<Boolean>>() {
+                    fut.listen(new CIX1<IgniteFuture<Boolean>>() {
                         @Override public void applyx(IgniteFuture<Boolean> f) {
                             try {
                                 assert f.get();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/GridTaskFutureImplStopGridSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridTaskFutureImplStopGridSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridTaskFutureImplStopGridSelfTest.java
index 3718373..f02899f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridTaskFutureImplStopGridSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridTaskFutureImplStopGridSelfTest.java
@@ -67,7 +67,7 @@ public class GridTaskFutureImplStopGridSelfTest extends GridCommonAbstractTest {
         try {
             final ComputeTaskFuture<?> fut = executeAsync(ignite.compute(), GridStopTestTask.class.getName(), null);
 
-            fut.listenAsync(new CI1<IgniteFuture>() {
+            fut.listen(new CI1<IgniteFuture>() {
                 @SuppressWarnings({"NakedNotify"})
                 @Override public void apply(IgniteFuture gridFut) {
                     synchronized (mux) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/GridTaskListenerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridTaskListenerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridTaskListenerSelfTest.java
index 351eeac..dd9cb9d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridTaskListenerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridTaskListenerSelfTest.java
@@ -63,7 +63,7 @@ public class GridTaskListenerSelfTest extends GridCommonAbstractTest {
 
         ComputeTaskFuture<?> fut = executeAsync(ignite.compute(), TestTask.class.getName(), null);
 
-        fut.listenAsync(lsnr);
+        fut.listen(lsnr);
 
         fut.get();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAsyncOperationsLimitSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAsyncOperationsLimitSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAsyncOperationsLimitSelfTest.java
index a199619..545447d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAsyncOperationsLimitSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAsyncOperationsLimitSelfTest.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.cache;
 
 import org.apache.ignite.*;
 import org.apache.ignite.configuration.*;
-import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.lang.*;
@@ -65,7 +64,7 @@ public class GridCacheAsyncOperationsLimitSelfTest extends GridCacheAbstractSelf
 
             IgniteFuture<?> fut = cacheAsync.future();
 
-            fut.listenAsync(new CI1<IgniteFuture<?>>() {
+            fut.listen(new CI1<IgniteFuture<?>>() {
                 @Override public void apply(IgniteFuture<?> t) {
                     cnt.decrementAndGet();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
index 9d2fe99..90aa7ee 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
@@ -259,7 +259,7 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
 
                     resQueue.put(fut); // Blocks if queue is full.
 
-                    fut.listenAsync(new CI1<IgniteFuture<Void>>() {
+                    fut.listen(new CI1<IgniteFuture<Void>>() {
                         @Override public void apply(IgniteFuture<Void> f) {
                             ComputeTaskFuture<?> taskFut = (ComputeTaskFuture<?>)f;
 
@@ -431,7 +431,7 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
 
                     resQueue.put(fut); // Blocks if queue is full.
 
-                    fut.listenAsync(new CI1<IgniteFuture<Void>>() {
+                    fut.listen(new CI1<IgniteFuture<Void>>() {
                         @Override public void apply(IgniteFuture<Void> f) {
                             ComputeTaskFuture<?> taskFut = (ComputeTaskFuture<?>)f;
 
@@ -482,7 +482,7 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
 
                 resQueue.put(fut); // Blocks if queue is full.
 
-                fut.listenAsync(new CI1<IgniteFuture<Void>>() {
+                fut.listen(new CI1<IgniteFuture<Void>>() {
                     @Override public void apply(IgniteFuture<Void> f) {
                         ComputeTaskFuture<?> taskFut = (ComputeTaskFuture<?>)f;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
index d57ed8e..d782d32 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
@@ -189,8 +189,8 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
 
         assertFalse(fut.isDone());
 
-        fut.listenAsync(lsnr1);
-        fut.listenAsync(lsnr2);
+        fut.listen(lsnr1);
+        fut.listen(lsnr2);
 
         U.sleep(100);
 
@@ -201,50 +201,6 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
 
         assertEquals(1, lsnr1Cnt.get());
         assertEquals(1, lsnr2Cnt.get());
-
-        lsnr1Cnt.set(0);
-        lsnr2Cnt.set(0);
-
-        // Stop one listener.
-        {
-            fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
-
-            fut = new IgniteFutureImpl<>(fut0);
-
-            fut.syncNotify(true);
-
-            fut.listenAsync(lsnr1);
-            fut.listenAsync(lsnr2);
-
-            fut.stopListenAsync(lsnr2);
-
-            fut0.onDone("test");
-
-            assertEquals(1, lsnr1Cnt.get());
-            assertEquals(0, lsnr2Cnt.get());
-
-            lsnr1Cnt.set(0);
-        }
-
-        // Stop both listeners.
-        {
-            fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
-
-            fut = new IgniteFutureImpl<>(fut0);
-
-            fut.syncNotify(true);
-
-            fut.listenAsync(lsnr1);
-            fut.listenAsync(lsnr2);
-
-            fut.stopListenAsync(lsnr2);
-            fut.stopListenAsync(lsnr1);
-
-            fut0.onDone("test");
-
-            assertEquals(0, lsnr1Cnt.get());
-            assertEquals(0, lsnr2Cnt.get());
-        }
     }
 
     /**
@@ -277,7 +233,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             };
 
-            fut.listenAsync(lsnr1);
+            fut.listen(lsnr1);
 
             fut0.onDone(err0);
 
@@ -310,7 +266,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             };
 
-            fut.listenAsync(lsnr1);
+            fut.listen(lsnr1);
 
             fut0.onDone(err0);
 
@@ -342,7 +298,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
 
         final AtomicInteger lsnrCnt = new AtomicInteger();
 
-        chained.listenAsync(new CI1<IgniteFuture<Integer>>() {
+        chained.listen(new CI1<IgniteFuture<Integer>>() {
             @Override public void apply(IgniteFuture<Integer> fut) {
                 assertEquals(10, (int)fut.get());
 
@@ -422,7 +378,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             };
 
-            chained.listenAsync(lsnr1);
+            chained.listen(lsnr1);
 
             fut0.onDone(err0);
 
@@ -496,7 +452,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             };
 
-            chained.listenAsync(lsnr1);
+            chained.listen(lsnr1);
 
             fut0.onDone(err0);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/loadtests/colocation/GridTestMain.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/colocation/GridTestMain.java b/modules/core/src/test/java/org/apache/ignite/loadtests/colocation/GridTestMain.java
index e8ffedf..892f405 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/colocation/GridTestMain.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/colocation/GridTestMain.java
@@ -97,7 +97,7 @@ public class GridTestMain {
 
             q.put(f);
 
-            f.listenAsync(new CI1<IgniteFuture<?>>() {
+            f.listen(new CI1<IgniteFuture<?>>() {
                 @Override public void apply(IgniteFuture<?> o) {
                     q.poll();
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionLoadTestClientSemaphore.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionLoadTestClientSemaphore.java b/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionLoadTestClientSemaphore.java
index 9ddc91d..327e2da 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionLoadTestClientSemaphore.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionLoadTestClientSemaphore.java
@@ -74,7 +74,7 @@ public class GridJobExecutionLoadTestClientSemaphore implements Callable<Object>
 
             ComputeTaskFuture<Object> f = comp.future();
 
-            f.listenAsync(lsnr);
+            f.listen(lsnr);
 
             txCnt.increment();
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionSingleNodeSemaphoreLoadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionSingleNodeSemaphoreLoadTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionSingleNodeSemaphoreLoadTest.java
index e8d7a13..d1665b5 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionSingleNodeSemaphoreLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/job/GridJobExecutionSingleNodeSemaphoreLoadTest.java
@@ -180,7 +180,7 @@ public class GridJobExecutionSingleNodeSemaphoreLoadTest {
 
                 ComputeTaskFuture<Object> f = comp.future();
 
-                f.listenAsync(lsnr);
+                f.listen(lsnr);
 
                 iterCntr.increment();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/loadtests/mergesort/GridMergeSortLoadTask.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/mergesort/GridMergeSortLoadTask.java b/modules/core/src/test/java/org/apache/ignite/loadtests/mergesort/GridMergeSortLoadTask.java
index 34c8fb9..9e73c71 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/mergesort/GridMergeSortLoadTask.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/mergesort/GridMergeSortLoadTask.java
@@ -77,7 +77,7 @@ public class GridMergeSortLoadTask extends ComputeTaskSplitAdapter<int[], int[]>
 
                         // Add a listener to the future, that will resume the
                         // parent task once the child one is completed.
-                        fut.listenAsync(new CI1<IgniteFuture<int[]>>() {
+                        fut.listen(new CI1<IgniteFuture<int[]>>() {
                             @Override public void apply(IgniteFuture<int[]> fut) {
                                 // CONTINUATION:
                                 // =============

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/core/src/test/java/org/apache/ignite/storevalbytes/GridCacheStoreValueBytesTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/storevalbytes/GridCacheStoreValueBytesTest.java b/modules/core/src/test/java/org/apache/ignite/storevalbytes/GridCacheStoreValueBytesTest.java
index 05fd5f8..3cf96d8 100644
--- a/modules/core/src/test/java/org/apache/ignite/storevalbytes/GridCacheStoreValueBytesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/storevalbytes/GridCacheStoreValueBytesTest.java
@@ -18,8 +18,6 @@
 package org.apache.ignite.storevalbytes;
 
 import org.apache.ignite.*;
-import org.apache.ignite.cache.*;
-import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
@@ -238,7 +236,7 @@ public class GridCacheStoreValueBytesTest {
 
                                 IgniteFuture<Object> f = asyncCache.future();
 
-                                f.listenAsync(lsnr);
+                                f.listen(lsnr);
 
                                 cntr.incrementAndGet();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java b/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
index 34284ac..409915a 100644
--- a/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
+++ b/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
@@ -582,7 +582,7 @@ class ScheduleFutureImpl<R> implements SchedulerFuture<R>, Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public void listenAsync(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
+    @Override public void listen(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
         if (lsnr != null) {
             Throwable err;
             R res;
@@ -612,15 +612,6 @@ class ScheduleFutureImpl<R> implements SchedulerFuture<R>, Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
-        A.notNull(lsnr, "lsnr");
-
-        synchronized (mux) {
-            lsnrs.remove(lsnr);
-        }
-    }
-
-    /** {@inheritDoc} */
     @SuppressWarnings("ExternalizableWithoutPublicNoArgConstructor")
     @Override public <T> IgniteFuture<T> chain(final IgniteClosure<? super IgniteFuture<R>, T> doneCb) {
         final GridFutureAdapter<T> fut = new GridFutureAdapter<T>(ctx, syncNotify) {
@@ -629,7 +620,7 @@ class ScheduleFutureImpl<R> implements SchedulerFuture<R>, Externalizable {
             }
         };
 
-        listenAsync(new CI1<IgniteFuture<R>>() {
+        listen(new CI1<IgniteFuture<R>>() {
             @Override public void apply(IgniteFuture<R> fut0) {
                 try {
                     fut.onDone(doneCb.apply(fut0));
@@ -964,13 +955,8 @@ class ScheduleFutureImpl<R> implements SchedulerFuture<R>, Externalizable {
         }
 
         /** {@inheritDoc} */
-        @Override public void listenAsync(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
-            ref.listenAsync(lsnr);
-        }
-
-        /** {@inheritDoc} */
-        @Override public void stopListenAsync(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
-            ref.stopListenAsync(lsnr);
+        @Override public void listen(@Nullable IgniteInClosure<? super IgniteFuture<R>> lsnr) {
+            ref.listen(lsnr);
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/680b0bac/modules/schedule/src/test/java/org/apache/ignite/internal/processors/schedule/GridScheduleSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/schedule/src/test/java/org/apache/ignite/internal/processors/schedule/GridScheduleSelfTest.java b/modules/schedule/src/test/java/org/apache/ignite/internal/processors/schedule/GridScheduleSelfTest.java
index c9444bf..c887b2d 100644
--- a/modules/schedule/src/test/java/org/apache/ignite/internal/processors/schedule/GridScheduleSelfTest.java
+++ b/modules/schedule/src/test/java/org/apache/ignite/internal/processors/schedule/GridScheduleSelfTest.java
@@ -113,7 +113,7 @@ public class GridScheduleSelfTest extends GridCommonAbstractTest {
 
             final AtomicInteger notifyCnt = new AtomicInteger();
 
-            fut.listenAsync(new CI1<IgniteFuture<?>>() {
+            fut.listen(new CI1<IgniteFuture<?>>() {
                 @Override public void apply(IgniteFuture<?> e) {
                     notifyCnt.incrementAndGet();
                 }
@@ -171,7 +171,7 @@ public class GridScheduleSelfTest extends GridCommonAbstractTest {
 
             final AtomicInteger notifyCnt = new AtomicInteger();
 
-            fut.listenAsync(new CI1<IgniteFuture<?>>() {
+            fut.listen(new CI1<IgniteFuture<?>>() {
                 @Override public void apply(IgniteFuture<?> e) {
                     notifyCnt.incrementAndGet();
                 }


[2/5] incubator-ignite git commit: futures: api cleanup

Posted by yz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImpl.java
index 6af2d2d..7c57978 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImpl.java
@@ -17,24 +17,35 @@
 
 package org.apache.ignite.internal.util.future;
 
-import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
 
 /**
  *
  */
 public class IgniteFinishedFutureImpl<V> extends IgniteFutureImpl<V> {
     /**
-     * @param ctx Context.
-     * @param err Error.
+     *
+     */
+    public IgniteFinishedFutureImpl() {
+        super(new GridFinishedFuture<>((V)null));
+    }
+
+    /**
+     * @param res Result.
      */
-    public IgniteFinishedFutureImpl(GridKernalContext ctx, Throwable err) {
-        super(new GridFinishedFuture<V>(ctx, err));
+    public IgniteFinishedFutureImpl(V res) {
+        super(new GridFinishedFuture<>(res));
     }
 
     /**
-     * @param ctx Context.
+     * @param err Error.
      */
-    public IgniteFinishedFutureImpl(GridKernalContext ctx) {
-        super(new GridFinishedFuture<>(ctx, (V)null));
+    public IgniteFinishedFutureImpl(Throwable err) {
+        super(new GridFinishedFuture<V>(err));
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(IgniteFinishedFutureImpl.class, this);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImplEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImplEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImplEx.java
deleted file mode 100644
index 6d633f5..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFinishedFutureImplEx.java
+++ /dev/null
@@ -1,30 +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.util.future;
-
-/**
- *
- */
-public class IgniteFinishedFutureImplEx<V> extends IgniteFutureImpl<V> {
-    /**
-     * @param res Object res.
-     */
-    public IgniteFinishedFutureImplEx(V res) {
-        super(new GridFinishedFutureEx<>(res));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
index 028616e..d6301b8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/IgniteFutureImpl.java
@@ -61,26 +61,6 @@ public class IgniteFutureImpl<V> implements IgniteFuture<V> {
     }
 
     /** {@inheritDoc} */
-    @Override public void syncNotify(boolean syncNotify) {
-        fut.syncNotify(syncNotify);
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean syncNotify() {
-        return fut.syncNotify();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void concurrentNotify(boolean concurNotify) {
-        fut.concurrentNotify(concurNotify);
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean concurrentNotify() {
-        return fut.concurrentNotify();
-    }
-
-    /** {@inheritDoc} */
     @Override public boolean isCancelled() {
         return fut.isCancelled();
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
index 5b99f58..9ab10cf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
@@ -8553,7 +8553,7 @@ public class GridFunc {
      * @return Completed future.
      */
     public static <T> IgniteInternalFuture<T> awaitOne(IgniteInternalFuture<T>... futs) {
-        return isEmpty(futs) ? new GridFinishedFutureEx<T>() : awaitOne(asList(futs));
+        return isEmpty(futs) ? new GridFinishedFuture<T>() : awaitOne(asList(futs));
     }
 
     /**
@@ -8565,7 +8565,7 @@ public class GridFunc {
      */
     public static <T> IgniteInternalFuture<T> awaitOne(Iterable<IgniteInternalFuture<T>> futs) {
         if (F.isEmpty(futs))
-            return new GridFinishedFutureEx<>();
+            return new GridFinishedFuture<>();
 
         final CountDownLatch latch = new CountDownLatch(1);
 
@@ -8594,7 +8594,7 @@ public class GridFunc {
 
         // Only NULLs have been passed in.
         if (c == null)
-            return new GridFinishedFutureEx<>();
+            return new GridFinishedFuture<>();
 
         boolean interrupted = false;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerFuture.java
index 1cabee3..672fe5e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerFuture.java
@@ -37,7 +37,7 @@ public class GridWorkerFuture<T> extends GridFutureAdapter<T> {
      * @param ctx Context.
      */
     public GridWorkerFuture(GridKernalContext ctx) {
-        super(ctx);
+        super();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java b/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
index 79b01e5..6941426 100644
--- a/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/lang/IgniteFuture.java
@@ -91,64 +91,6 @@ public interface IgniteFuture<V> extends Future<V> {
     public long duration();
 
     /**
-     * Flag to turn on or off synchronous listener notification. If this flag is {@code true}, then
-     * upon future completion the notification may happen in the same thread that created
-     * the future. This becomes especially important when adding listener to a future that
-     * is already {@code done} - if this flag is {@code true}, then listener will be
-     * immediately notified within the same thread.
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_SYNC_NOTIFICATION} system property to {@code true}.
-     *
-     * @param syncNotify Flag to turn on or off synchronous listener notification.
-     */
-    public void syncNotify(boolean syncNotify);
-
-    /**
-     * Gets value of synchronous listener notification flag. If this flag is {@code true}, then
-     * upon future completion the notification may happen in the same thread that created
-     * the future. This becomes especially important when adding listener to a future that
-     * is already {@code done} - if this flag is {@code true}, then listener will be
-     * immediately notified within the same thread.
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_SYNC_NOTIFICATION} system property to {@code true}.
-     *
-     * @return Synchronous listener notification flag.
-     */
-    public boolean syncNotify();
-
-    /**
-     * Flag to turn on or off concurrent listener notification. This flag comes into play only
-     * when a future has more than one listener subscribed to it. If this flag is {@code true},
-     * then all listeners will be notified concurrently by different threads; otherwise,
-     * listeners will be notified one after another within one thread (depending on
-     * {@link #syncNotify()} flag, these notifications may happen either in the same thread which
-     * started the future, or in a different thread).
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_CONCURRENT_NOTIFICATION} system property to {@code true}.
-     *
-     * @param concurNotify Flag to turn on or off concurrent listener notification.
-     */
-    public void concurrentNotify(boolean concurNotify);
-
-    /**
-     * Gets value concurrent listener notification flag. This flag comes into play only
-     * when a future has more than one listener subscribed to it. If this flag is {@code true},
-     * then all listeners will be notified concurrently by different threads; otherwise,
-     * listeners will be notified one after another within one thread (depending on
-     * {@link #syncNotify()} flag, these notifications may happen either in the same thread which
-     * started the future, or in a different thread).
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_CONCURRENT_NOTIFICATION} system property to {@code true}.
-     *
-     * @return Concurrent listener notification flag
-     */
-    public boolean concurrentNotify();
-
-    /**
      * Registers listener closure to be asynchronously notified whenever future completes.
      *
      * @param lsnr Listener closure to register. If not provided - this method is no-op.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 19fe5c5..493a9dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -354,9 +354,9 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
                         }
                     }
 
-                    GridFutureAdapterEx<GridCommunicationClient> fut = new GridFutureAdapterEx<>();
+                    GridFutureAdapter<GridCommunicationClient> fut = new GridFutureAdapter<>();
 
-                    GridFutureAdapterEx<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
+                    GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(sndId, fut);
 
                     assert msg instanceof HandshakeMessage : msg;
 
@@ -545,7 +545,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
                 private final HandshakeMessage msg;
 
                 /** */
-                private final GridFutureAdapterEx<GridCommunicationClient> fut;
+                private final GridFutureAdapter<GridCommunicationClient> fut;
 
                 /** */
                 private final boolean createClient;
@@ -563,7 +563,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
                     ClusterNode rmtNode,
                     HandshakeMessage msg,
                     boolean createClient,
-                    GridFutureAdapterEx<GridCommunicationClient> fut) {
+                    GridFutureAdapter<GridCommunicationClient> fut) {
                     this.ses = ses;
                     this.recoveryDesc = recoveryDesc;
                     this.rmtNode = rmtNode;
@@ -764,7 +764,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
     };
 
     /** Client connect futures. */
-    private final ConcurrentMap<UUID, GridFutureAdapterEx<GridCommunicationClient>> clientFuts =
+    private final ConcurrentMap<UUID, GridFutureAdapter<GridCommunicationClient>> clientFuts =
         GridConcurrentFactory.newMap();
 
     /** */
@@ -1790,9 +1790,9 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
                     throw new IgniteSpiException("Grid is stopping.");
 
                 // Do not allow concurrent connects.
-                GridFutureAdapterEx<GridCommunicationClient> fut = new ConnectFuture();
+                GridFutureAdapter<GridCommunicationClient> fut = new ConnectFuture();
 
-                GridFutureAdapterEx<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(nodeId, fut);
+                GridFutureAdapter<GridCommunicationClient> oldFut = clientFuts.putIfAbsent(nodeId, fut);
 
                 if (oldFut == null) {
                     try {
@@ -2862,7 +2862,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
     /**
      *
      */
-    private static class ConnectFuture extends GridFutureAdapterEx<GridCommunicationClient> {
+    private static class ConnectFuture extends GridFutureAdapter<GridCommunicationClient> {
         /** */
         private static final long serialVersionUID = 0L;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index e52fcaa..ca34f1f 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -1164,7 +1164,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
         if (F.contains(locNodeAddrs, addr))
             return F.t(ignite.configuration().getNodeId(), false);
 
-        GridFutureAdapterEx<IgniteBiTuple<UUID, Boolean>> fut = new GridFutureAdapterEx<>();
+        GridFutureAdapter<IgniteBiTuple<UUID, Boolean>> fut = new GridFutureAdapter<>();
 
         IgniteInternalFuture<IgniteBiTuple<UUID, Boolean>> oldFut = pingMap.putIfAbsent(addr, fut);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheEventAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheEventAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheEventAbstractTest.java
index 24cd202..7cad61a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheEventAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheEventAbstractTest.java
@@ -894,7 +894,7 @@ public abstract class GridCacheEventAbstractTest extends GridCacheAbstractSelfTe
          * @param partitioned Partitioned flag.
          */
         EventTypeFuture(GridKernalContext ctx, int evtType, int expCnt, boolean partitioned) {
-            super(ctx);
+            super();
 
             assert expCnt > 0;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
index bf28a59..d89468b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
@@ -79,33 +79,7 @@ public class GridCacheCommandHandlerSelfTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testCacheGetFailsSyncNotify() throws Exception {
-        GridRestCommandHandler hnd = new TestableCacheCommandHandler(((IgniteKernal)grid()).context(), "getAsync",
-            true);
-
-        GridRestCacheRequest req = new GridRestCacheRequest();
-
-        req.command(GridRestCommand.CACHE_GET);
-
-        req.key("k1");
-
-        try {
-            hnd.handleAsync(req).get();
-
-            fail("Expected exception not thrown.");
-        }
-        catch (IgniteCheckedException e) {
-            info("Got expected exception: " + e);
-        }
-    }
-
-    /**
-     * Tests the cache failure during the execution of the CACHE_GET command.
-     *
-     * @throws Exception If failed.
-     */
-    public void testCacheGetFailsAsyncNotify() throws Exception {
-        GridRestCommandHandler hnd = new TestableCacheCommandHandler(((IgniteKernal)grid()).context(), "getAsync",
-            false);
+        GridRestCommandHandler hnd = new TestableCacheCommandHandler(((IgniteKernal)grid()).context(), "getAsync");
 
         GridRestCacheRequest req = new GridRestCacheRequest();
 
@@ -215,21 +189,15 @@ public class GridCacheCommandHandlerSelfTest extends GridCommonAbstractTest {
         /** */
         private final String failMtd;
 
-        /** */
-        private final boolean sync;
-
         /**
          * Constructor.
-         *
-         * @param ctx Context.
+         *  @param ctx Context.
          * @param failMtd Method to fail.
-         * @param sync Sync notification flag.
          */
-        TestableCacheCommandHandler(final GridKernalContext ctx, final String failMtd, final boolean sync) {
+        TestableCacheCommandHandler(final GridKernalContext ctx, final String failMtd) {
             super(ctx);
 
             this.failMtd = failMtd;
-            this.sync = sync;
         }
 
         /**
@@ -245,11 +213,9 @@ public class GridCacheCommandHandlerSelfTest extends GridCommonAbstractTest {
                 new InvocationHandler() {
                     @Override public Object invoke(Object proxy, Method mtd, Object[] args) throws Throwable {
                         if (failMtd.equals(mtd.getName())) {
-                            IgniteInternalFuture<Object> fut = new GridFinishedFuture<>(ctx,
+                            IgniteInternalFuture<Object> fut = new GridFinishedFuture<>(
                                 new IgniteCheckedException("Operation failed"));
 
-                            fut.syncNotify(sync);
-
                             return fut;
                         }
                         // Rewriting flagOn result to keep intercepting invocations after it.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridCompoundFutureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridCompoundFutureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridCompoundFutureSelfTest.java
index 550e8ee..837d33d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridCompoundFutureSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridCompoundFutureSelfTest.java
@@ -34,14 +34,10 @@ public class GridCompoundFutureSelfTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testMarkInitialized() throws Exception {
-        GridTestKernalContext ctx = new GridTestKernalContext(log);
-
         GridCompoundFuture<Boolean, Boolean> fut = new GridCompoundFuture<>();
 
         for (int i = 0; i < 5; i++) {
-            IgniteInternalFuture<Boolean> part = new GridFinishedFuture<>(ctx, true);
-
-            part.syncNotify(true);
+            IgniteInternalFuture<Boolean> part = new GridFinishedFuture<>(true);
 
             fut.add(part);
         }
@@ -65,7 +61,7 @@ public class GridCompoundFutureSelfTest extends GridCommonAbstractTest {
         List<GridFutureAdapter<Boolean>> futs = new ArrayList<>(5);
 
         for (int i = 0; i < 5; i++) {
-            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>(ctx, true);
+            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>();
 
             fut.add(part);
 
@@ -99,7 +95,7 @@ public class GridCompoundFutureSelfTest extends GridCommonAbstractTest {
         List<GridFutureAdapter<Boolean>> futs = new ArrayList<>(5);
 
         for (int i = 0; i < 5; i++) {
-            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>(ctx, true);
+            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>();
 
             fut.add(part);
 
@@ -134,7 +130,7 @@ public class GridCompoundFutureSelfTest extends GridCommonAbstractTest {
             new ConcurrentLinkedDeque8<>();
 
         for (int i = 0; i < 1000; i++) {
-            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>(ctx, true);
+            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>();
 
             fut.add(part);
 
@@ -169,7 +165,7 @@ public class GridCompoundFutureSelfTest extends GridCommonAbstractTest {
             new ConcurrentLinkedDeque8<>();
 
         for (int i = 0; i < 1000; i++) {
-            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>(ctx, true);
+            GridFutureAdapter<Boolean> part = new GridFutureAdapter<>();
 
             fut.add(part);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridEmbeddedFutureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridEmbeddedFutureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridEmbeddedFutureSelfTest.java
index f9e2dfb..45633ae 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridEmbeddedFutureSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridEmbeddedFutureSelfTest.java
@@ -47,7 +47,7 @@ public class GridEmbeddedFutureSelfTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testFutureChain() throws Exception {
-        GridFutureAdapter<Integer> fut = new GridFutureAdapter<>(ctx);
+        GridFutureAdapter<Integer> fut = new GridFutureAdapter<>();
 
         IgniteInternalFuture<Integer> cur = fut;
 
@@ -55,9 +55,9 @@ public class GridEmbeddedFutureSelfTest extends GridCommonAbstractTest {
             cur = new GridEmbeddedFuture<>(cur,
                 new IgniteBiClosure<Integer, Exception, IgniteInternalFuture<Integer>>() {
                     @Override public IgniteInternalFuture<Integer> apply(Integer o, Exception e) {
-                        return new GridFinishedFuture<>(ctx, o);
+                        return new GridFinishedFuture<>(o);
                     }
-                }, ctx);
+                });
         }
 
         fut.onDone(1);
@@ -82,10 +82,10 @@ public class GridEmbeddedFutureSelfTest extends GridCommonAbstractTest {
 
         for (final Throwable x : list) {
             // Original future.
-            final GridFutureAdapter<Integer> origFut = new GridFutureAdapter<>(ctx);
+            final GridFutureAdapter<Integer> origFut = new GridFutureAdapter<>();
 
             // Embedded future to test.
-            GridEmbeddedFuture<Double, Integer> embFut = new GridEmbeddedFuture<>(ctx, origFut,
+            GridEmbeddedFuture<Double, Integer> embFut = new GridEmbeddedFuture<>(origFut,
                 new C2<Integer, Exception, Double>() {
                     @Override public Double apply(Integer val, Exception e) {
                         if (x instanceof Error)
@@ -98,7 +98,8 @@ public class GridEmbeddedFutureSelfTest extends GridCommonAbstractTest {
 
                         return null;
                     }
-                });
+                },
+                false);
 
             assertFalse("Expect original future is not complete.", origFut.isDone());
             assertFalse("Expect embedded future is not complete.", embFut.isDone());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFinishedFutureSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFinishedFutureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFinishedFutureSelfTest.java
deleted file mode 100644
index 976f72d..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFinishedFutureSelfTest.java
+++ /dev/null
@@ -1,103 +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.util.future;
-
-import org.apache.ignite.*;
-import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.util.typedef.*;
-import org.apache.ignite.marshaller.*;
-import org.apache.ignite.marshaller.optimized.*;
-import org.apache.ignite.testframework.*;
-import org.apache.ignite.testframework.junits.common.*;
-import org.jetbrains.annotations.*;
-
-import java.util.concurrent.*;
-
-import static java.util.concurrent.TimeUnit.*;
-
-/**
- * Tests finished future use cases.
- */
-public class GridFinishedFutureSelfTest extends GridCommonAbstractTest {
-    /** Create test and start grid. */
-    public GridFinishedFutureSelfTest() {
-        super(true);
-    }
-
-    /**
-     * Test finished future serialization.
-     *
-     * @throws Exception In case of any exception.
-     */
-    public void testExternalizable() throws Exception {
-        Object t = "result";
-        Throwable ex = new IgniteException("exception");
-
-        testExternalizable(t, null, true);
-        testExternalizable(t, null, false);
-        testExternalizable(null, ex, true);
-        testExternalizable(null, ex, false);
-    }
-
-    /**
-     * Test finished future serialization.
-     *
-     * @param t Future result.
-     * @param ex Future exception.
-     * @param syncNotify Synchronous notifications flag.
-     * @throws Exception In case of any exception.
-     */
-    private void testExternalizable(@Nullable Object t, @Nullable Throwable ex, boolean syncNotify) throws Exception {
-        GridKernalContext ctx = ((IgniteKernal)grid()).context();
-
-        Marshaller m = new OptimizedMarshaller();
-        ClassLoader clsLdr = getClass().getClassLoader();
-
-        IgniteInternalFuture<Object> orig = t == null ? new GridFinishedFuture<>(ctx, ex) :
-            new GridFinishedFuture<>(ctx, t);
-
-        orig.syncNotify(syncNotify);
-
-        GridFinishedFuture<Object> fut = m.unmarshal(m.marshal(orig), clsLdr);
-
-        assertEquals(t, GridTestUtils.getFieldValue(fut, "t"));
-
-        if (ex == null)
-            assertNull(GridTestUtils.<Throwable>getFieldValue(fut, "err"));
-        else {
-            assertEquals(ex.getClass(), GridTestUtils.<Throwable>getFieldValue(fut, "err").getClass());
-            assertEquals(ex.getMessage(), GridTestUtils.<Throwable>getFieldValue(fut, "err").getMessage());
-        }
-
-        assertEquals(syncNotify, GridTestUtils.<Boolean>getFieldValue(fut, "syncNotify").booleanValue());
-        assertEquals(ctx.gridName(), GridTestUtils.<GridKernalContext>getFieldValue(fut, "ctx").gridName());
-
-        final CountDownLatch done = new CountDownLatch(1);
-
-        fut.listenAsync(new CI1<IgniteInternalFuture<Object>>() {
-            @Override public void apply(IgniteInternalFuture<Object> t) {
-                done.countDown();
-            }
-        });
-
-        if (syncNotify)
-            assertEquals("Expect notification is already complete.", 0, done.getCount());
-        else
-            assertTrue("Wait until notification completes asynchronously.", done.await(100, MILLISECONDS));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFutureAdapterSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFutureAdapterSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFutureAdapterSelfTest.java
index 2ef9f10..6ef5549 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFutureAdapterSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/future/GridFutureAdapterSelfTest.java
@@ -115,7 +115,7 @@ public class GridFutureAdapterSelfTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testListenSyncNotify() throws Exception {
-        GridFutureAdapter<String> fut = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+        GridFutureAdapter<String> fut = new GridFutureAdapter<>();
 
         int lsnrCnt = 10;
 
@@ -176,7 +176,7 @@ public class GridFutureAdapterSelfTest extends GridCommonAbstractTest {
         ctx.start();
 
         try {
-            GridFutureAdapter<String> fut = new GridFutureAdapter<>(ctx, false);
+            GridFutureAdapter<String> fut = new GridFutureAdapter<>();
 
             int lsnrCnt = 10;
 
@@ -253,7 +253,7 @@ public class GridFutureAdapterSelfTest extends GridCommonAbstractTest {
         try {
             // Test result returned.
 
-            GridFutureAdapter<Object> fut = new GridFutureAdapter<>(ctx);
+            GridFutureAdapter<Object> fut = new GridFutureAdapter<>();
             IgniteInternalFuture<Object> chain = fut.chain(passThrough);
 
             assertFalse(fut.isDone());
@@ -274,7 +274,7 @@ public class GridFutureAdapterSelfTest extends GridCommonAbstractTest {
 
             // Test exception re-thrown.
 
-            fut = new GridFutureAdapter<>(ctx);
+            fut = new GridFutureAdapter<>();
             chain = fut.chain(passThrough);
 
             fut.onDone(new ClusterGroupEmptyCheckedException("test exception"));
@@ -290,7 +290,7 @@ public class GridFutureAdapterSelfTest extends GridCommonAbstractTest {
 
             // Test error re-thrown.
 
-            fut = new GridFutureAdapter<>(ctx);
+            fut = new GridFutureAdapter<>();
             chain = fut.chain(passThrough);
 
             try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
index d782d32..4835eef 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/future/IgniteFutureImplTest.java
@@ -22,7 +22,6 @@ import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.testframework.*;
-import org.apache.ignite.testframework.junits.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 import java.util.concurrent.*;
@@ -143,30 +142,10 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testListeners() throws Exception {
-        GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+        GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
         IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
-        fut.syncNotify(true);
-
-        assertTrue(fut.syncNotify());
-
-        fut.syncNotify(false);
-
-        assertFalse(fut.syncNotify());
-
-        fut.concurrentNotify(true);
-
-        assertTrue(fut.concurrentNotify());
-
-        fut.concurrentNotify(false);
-
-        assertFalse(fut.concurrentNotify());
-
-        fut.syncNotify(true);
-
-        assertTrue(fut.syncNotify());
-
         final AtomicInteger lsnr1Cnt = new AtomicInteger();
 
         IgniteInClosure<? super IgniteFuture<String>> lsnr1 = new CI1<IgniteFuture<String>>() {
@@ -208,12 +187,10 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
      */
     public void testListenersOnError() throws Exception {
         {
-            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
             IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
-            fut.syncNotify(true);
-
             final IgniteException err0 = new IgniteException("test error");
 
             final AtomicBoolean passed = new AtomicBoolean();
@@ -241,12 +218,10 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
         }
 
         {
-            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
             IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
-            fut.syncNotify(true);
-
             final IgniteCheckedException err0 = new IgniteCheckedException("test error");
 
             final AtomicBoolean passed = new AtomicBoolean();
@@ -278,7 +253,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     public void testChain() throws Exception {
-        GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+        GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
         IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
@@ -332,7 +307,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
      */
     public void testChainError() throws Exception {
         {
-            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
             IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
@@ -359,8 +334,6 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             });
 
-            assertTrue(chained.syncNotify());
-
             final AtomicBoolean lsnrPassed = new AtomicBoolean();
 
             IgniteInClosure<? super IgniteFuture<Integer>> lsnr1 = new CI1<IgniteFuture<Integer>>() {
@@ -406,7 +379,7 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
         }
 
         {
-            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>(new GridTestKernalContext(log), true);
+            GridFutureAdapter<String> fut0 = new GridFutureAdapter<>();
 
             IgniteFutureImpl<String> fut = new IgniteFutureImpl<>(fut0);
 
@@ -433,8 +406,6 @@ public class IgniteFutureImplTest extends GridCommonAbstractTest {
                 }
             });
 
-            assertTrue(chained.syncNotify());
-
             final AtomicBoolean lsnrPassed = new AtomicBoolean();
 
             IgniteInClosure<? super IgniteFuture<Integer>> lsnr1 = new CI1<IgniteFuture<Integer>>() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteLangSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteLangSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteLangSelfTestSuite.java
index 6b7f956..4ad8ba6 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteLangSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteLangSelfTestSuite.java
@@ -55,7 +55,6 @@ public class IgniteLangSelfTestSuite extends TestSuite {
         suite.addTest(new TestSuite(GridStripedLockSelfTest.class));
 
         suite.addTest(new TestSuite(GridFutureAdapterSelfTest.class));
-        suite.addTest(new TestSuite(GridFinishedFutureSelfTest.class));
         suite.addTest(new TestSuite(GridCompoundFutureSelfTest.class));
         suite.addTest(new TestSuite(GridEmbeddedFutureSelfTest.class));
         suite.addTest(new TestSuite(GridNioFutureSelfTest.class));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/GridHadoopJobTracker.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/GridHadoopJobTracker.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/GridHadoopJobTracker.java
index 0beaf32..1c48c09 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/GridHadoopJobTracker.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/jobtracker/GridHadoopJobTracker.java
@@ -66,7 +66,7 @@ public class GridHadoopJobTracker extends GridHadoopComponent {
     private GridHadoopMapReducePlanner mrPlanner;
 
     /** All the known jobs. */
-    private final ConcurrentMap<GridHadoopJobId, GridFutureAdapterEx<GridHadoopJob>> jobs = new ConcurrentHashMap8<>();
+    private final ConcurrentMap<GridHadoopJobId, GridFutureAdapter<GridHadoopJob>> jobs = new ConcurrentHashMap8<>();
 
     /** Locally active jobs. */
     private final ConcurrentMap<GridHadoopJobId, JobLocalState> activeJobs = new ConcurrentHashMap8<>();
@@ -236,7 +236,7 @@ public class GridHadoopJobTracker extends GridHadoopComponent {
     @SuppressWarnings("unchecked")
     public IgniteInternalFuture<GridHadoopJobId> submit(GridHadoopJobId jobId, GridHadoopJobInfo info) {
         if (!busyLock.tryReadLock()) {
-            return new GridFinishedFutureEx<>(new IgniteCheckedException("Failed to execute map-reduce job " +
+            return new GridFinishedFuture<>(new IgniteCheckedException("Failed to execute map-reduce job " +
                 "(grid is stopping): " + info));
         }
 
@@ -283,7 +283,7 @@ public class GridHadoopJobTracker extends GridHadoopComponent {
         catch (IgniteCheckedException e) {
             U.error(log, "Failed to submit job: " + jobId, e);
 
-            return new GridFinishedFutureEx<>(e);
+            return new GridFinishedFuture<>(e);
         }
         finally {
             busyLock.readUnlock();
@@ -358,7 +358,7 @@ public class GridHadoopJobTracker extends GridHadoopComponent {
                 if (log.isTraceEnabled())
                     log.trace("Job is complete, returning finished future: " + jobId);
 
-                return new GridFinishedFutureEx<>(jobId, meta.failCause());
+                return new GridFinishedFuture<>(jobId);
             }
 
             GridFutureAdapter<GridHadoopJobId> fut = F.addIfAbsent(activeFinishFuts, jobId,
@@ -967,9 +967,9 @@ public class GridHadoopJobTracker extends GridHadoopComponent {
      * @throws IgniteCheckedException If failed.
      */
     @Nullable public GridHadoopJob job(GridHadoopJobId jobId, @Nullable GridHadoopJobInfo jobInfo) throws IgniteCheckedException {
-        GridFutureAdapterEx<GridHadoopJob> fut = jobs.get(jobId);
+        GridFutureAdapter<GridHadoopJob> fut = jobs.get(jobId);
 
-        if (fut != null || (fut = jobs.putIfAbsent(jobId, new GridFutureAdapterEx<GridHadoopJob>())) != null)
+        if (fut != null || (fut = jobs.putIfAbsent(jobId, new GridFutureAdapter<GridHadoopJob>())) != null)
             return fut.get();
 
         fut = jobs.get(jobId);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffle.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffle.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffle.java
index 396124e..25f7b85 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffle.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffle.java
@@ -237,13 +237,13 @@ public class GridHadoopShuffle extends GridHadoopComponent {
         GridHadoopShuffleJob job = jobs.get(jobId);
 
         if (job == null)
-            return new GridFinishedFutureEx<>();
+            return new GridFinishedFuture<>();
 
         try {
             return job.flush();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFutureEx<>(e);
+            return new GridFinishedFuture<>(e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffleJob.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffleJob.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffleJob.java
index 545c1b8..d307740 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffleJob.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/shuffle/GridHadoopShuffleJob.java
@@ -74,7 +74,7 @@ public class GridHadoopShuffleJob<T> implements AutoCloseable {
     private volatile IgniteInClosure2X<T, GridHadoopShuffleMessage> io;
 
     /** */
-    protected ConcurrentMap<Long, IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapterEx<?>>> sentMsgs =
+    protected ConcurrentMap<Long, IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapter<?>>> sentMsgs =
         new ConcurrentHashMap<>();
 
     /** */
@@ -242,7 +242,7 @@ public class GridHadoopShuffleJob<T> implements AutoCloseable {
      */
     @SuppressWarnings("ConstantConditions")
     public void onShuffleAck(GridHadoopShuffleAck ack) {
-        IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapterEx<?>> tup = sentMsgs.get(ack.id());
+        IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapter<?>> tup = sentMsgs.get(ack.id());
 
         if (tup != null)
             tup.get2().onDone();
@@ -365,14 +365,14 @@ public class GridHadoopShuffleJob<T> implements AutoCloseable {
      * @param newBufMinSize Min new buffer size.
      */
     private void send(final int idx, int newBufMinSize) {
-        final GridFutureAdapterEx<?> fut = new GridFutureAdapterEx<>();
+        final GridFutureAdapter<?> fut = new GridFutureAdapter<>();
 
         GridHadoopShuffleMessage msg = msgs[idx];
 
         final long msgId = msg.id();
 
-        IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapterEx<?>> old = sentMsgs.putIfAbsent(msgId,
-            new IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapterEx<?>>(msg, fut));
+        IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapter<?>> old = sentMsgs.putIfAbsent(msgId,
+            new IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapter<?>>(msg, fut));
 
         assert old == null;
 
@@ -441,7 +441,7 @@ public class GridHadoopShuffleJob<T> implements AutoCloseable {
         flushed = true;
 
         if (maps.length() == 0)
-            return new GridFinishedFutureEx<>();
+            return new GridFinishedFuture<>();
 
         U.await(ioInitLatch);
 
@@ -471,7 +471,7 @@ public class GridHadoopShuffleJob<T> implements AutoCloseable {
 
         GridCompoundFuture fut = new GridCompoundFuture<>();
 
-        for (IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapterEx<?>> tup : sentMsgs.values())
+        for (IgniteBiTuple<GridHadoopShuffleMessage, GridFutureAdapter<?>> tup : sentMsgs.values())
             fut.add(tup.get2());
 
         fut.markInitialized();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/GridHadoopExternalTaskExecutor.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/GridHadoopExternalTaskExecutor.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/GridHadoopExternalTaskExecutor.java
index 72185c0..2043648 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/GridHadoopExternalTaskExecutor.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/GridHadoopExternalTaskExecutor.java
@@ -888,7 +888,7 @@ public class GridHadoopExternalTaskExecutor extends GridHadoopTaskExecutorAdapte
          * @param ctx Kernal context.
          */
         private GridHadoopProcessFuture(UUID childProcId, GridHadoopJobId jobId, GridKernalContext ctx) {
-            super(ctx);
+            super();
 
             this.childProcId = childProcId;
             this.jobId = jobId;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/child/GridHadoopChildProcessRunner.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/child/GridHadoopChildProcessRunner.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/child/GridHadoopChildProcessRunner.java
index 2d00222..c422e4e 100644
--- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/child/GridHadoopChildProcessRunner.java
+++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/taskexecutor/external/child/GridHadoopChildProcessRunner.java
@@ -66,7 +66,7 @@ public class GridHadoopChildProcessRunner {
     private long startTime;
 
     /** Init future. */
-    private final GridFutureAdapterEx<?> initFut = new GridFutureAdapterEx<>();
+    private final GridFutureAdapter<?> initFut = new GridFutureAdapter<>();
 
     /** Job instance. */
     private GridHadoopJob job;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index e3da0b7..2e3e113 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -765,7 +765,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
             c = connectionForSpace(space);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFutureEx<>(e);
+            return new GridFinishedFuture<>(e);
         }
 
         return queryTwoStep(space, GridSqlQuerySplitter.split(c, sqlQry, params));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 911a2a2..618c1d1 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -129,7 +129,7 @@ public class GridReduceQueryExecutor {
             r.conn = h2.connectionForSpace(space);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFutureEx<>(e);
+            return new GridFinishedFuture<>(e);
         }
 
         Collection<ClusterNode> nodes = ctx.grid().cluster().nodes(); // TODO filter nodes somehow?
@@ -141,7 +141,7 @@ public class GridReduceQueryExecutor {
                 tbl = createTable(r.conn, mapQry);
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFutureEx<>(e);
+                return new GridFinishedFuture<>(e);
             }
 
             tbl.getScanIndex(null).setNumberOfSources(nodes.size());
@@ -166,12 +166,12 @@ public class GridReduceQueryExecutor {
             for (GridMergeTable tbl : r.tbls)
                 dropTable(r.conn, tbl.getName());
 
-            return new GridFinishedFuture(ctx, new Iter(res));
+            return new GridFinishedFuture(new Iter(res));
         }
         catch (IgniteCheckedException | InterruptedException | SQLException e) {
             U.closeQuiet(r.conn);
 
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
----------------------------------------------------------------------
diff --git a/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java b/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
index 409915a..7f76873 100644
--- a/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
+++ b/modules/schedule/src/main/java/org/apache/ignite/internal/processors/schedule/ScheduleFutureImpl.java
@@ -37,7 +37,6 @@ import java.util.concurrent.atomic.*;
 import java.util.regex.*;
 
 import static java.util.concurrent.TimeUnit.*;
-import static org.apache.ignite.IgniteSystemProperties.*;
 
 /**
  * Implementation of {@link org.apache.ignite.scheduler.SchedulerFuture} interface.
@@ -614,7 +613,7 @@ class ScheduleFutureImpl<R> implements SchedulerFuture<R>, Externalizable {
     /** {@inheritDoc} */
     @SuppressWarnings("ExternalizableWithoutPublicNoArgConstructor")
     @Override public <T> IgniteFuture<T> chain(final IgniteClosure<? super IgniteFuture<R>, T> doneCb) {
-        final GridFutureAdapter<T> fut = new GridFutureAdapter<T>(ctx, syncNotify) {
+        final GridFutureAdapter<T> fut = new GridFutureAdapter<T>() {
             @Override public String toString() {
                 return "ChainFuture[orig=" + ScheduleFutureImpl.this + ", doneCb=" + doneCb + ']';
             }


[4/5] incubator-ignite git commit: futures: api cleanup

Posted by yz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index add51bd..cd3eb59 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -598,7 +598,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                         @Override public IgniteInternalFuture<T> apply(T t, Exception e) {
                             return op.apply();
                         }
-                    }, ctx.kernalContext());
+                    });
 
                 saveFuture(holder, f);
 
@@ -796,7 +796,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             conflictRmvMap != null ? conflictRmvMap.values() : null,
             retval,
             rawRetval,
-            cached,
             prj != null ? prj.expiry() : null,
             filter,
             subjId,
@@ -859,7 +858,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             keys != null ? null : conflictMap.values(),
             retval,
             rawRetval,
-            cached,
             (filter != null && prj != null) ? prj.expiry() : null,
             filter,
             subjId,
@@ -901,7 +899,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
         ctx.checkSecurity(GridSecurityPermission.CACHE_READ);
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         if (keyCheck)
             validateCacheKeys(keys);
@@ -980,7 +978,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
                         break; // While.
                     }
                     catch (IgniteCheckedException e) {
-                        return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                        return new GridFinishedFuture<>(e);
                     }
                     finally {
                         if (entry != null)
@@ -997,7 +995,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             if (success) {
                 sendTtlUpdateRequest(expiry);
 
-                return ctx.wrapCloneMap(new GridFinishedFuture<>(ctx.kernalContext(), locVals));
+                return ctx.wrapCloneMap(new GridFinishedFuture<>(locVals));
             }
         }
 
@@ -2320,7 +2318,6 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
             drRmvVals,
             req.returnValue(),
             false,
-            null,
             req.expiry(),
             req.filter(),
             req.subjectId(),
@@ -2787,7 +2784,7 @@ public class GridDhtAtomicCache<K, V> extends GridDhtCacheAdapter<K, V> {
     /**
      *
      */
-    private static class FinishedLockFuture extends GridFinishedFutureEx<Boolean> implements GridDhtFuture<Boolean> {
+    private static class FinishedLockFuture extends GridFinishedFuture<Boolean> implements GridDhtFuture<Boolean> {
         /** */
         private static final long serialVersionUID = 0L;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
index 92fe74b..b284b79 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
@@ -33,7 +33,6 @@ import org.jdk8.backport.*;
 import org.jetbrains.annotations.*;
 
 import javax.cache.processor.*;
-import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -90,13 +89,6 @@ public class GridDhtAtomicUpdateFuture<K, V> extends GridFutureAdapter<Void>
     private volatile long mapTime;
 
     /**
-     * Empty constructor required by {@link Externalizable}.
-     */
-    public GridDhtAtomicUpdateFuture() {
-        // No-op.
-    }
-
-    /**
      * @param cctx Cache context.
      * @param completionCb Callback to invoke when future is completed.
      * @param writeVer Write version.
@@ -110,7 +102,7 @@ public class GridDhtAtomicUpdateFuture<K, V> extends GridFutureAdapter<Void>
         GridNearAtomicUpdateRequest<K, V> updateReq,
         GridNearAtomicUpdateResponse<K, V> updateRes
     ) {
-        super(cctx.kernalContext());
+        super();
 
         this.cctx = cctx;
         this.writeVer = writeVer;
@@ -122,7 +114,8 @@ public class GridDhtAtomicUpdateFuture<K, V> extends GridFutureAdapter<Void>
 
         forceTransformBackups = updateReq.forceTransformBackups();
 
-        log = U.logger(ctx, logRef, GridDhtAtomicUpdateFuture.class);
+        if (log == null)
+            log = U.logger(cctx.kernalContext(), logRef, GridDhtAtomicUpdateFuture.class);
 
         keys = new ArrayList<>(updateReq.keys().size());
     }
@@ -234,7 +227,7 @@ public class GridDhtAtomicUpdateFuture<K, V> extends GridFutureAdapter<Void>
         for (ClusterNode node : dhtNodes) {
             UUID nodeId = node.id();
 
-            if (!nodeId.equals(ctx.localNodeId())) {
+            if (!nodeId.equals(cctx.localNodeId())) {
                 GridDhtAtomicUpdateRequest<K, V> updateReq = mappings.get(nodeId);
 
                 if (updateReq == null) {
@@ -291,7 +284,7 @@ public class GridDhtAtomicUpdateFuture<K, V> extends GridFutureAdapter<Void>
             GridDhtAtomicUpdateRequest<K, V> updateReq = mappings.get(nodeId);
 
             if (updateReq == null) {
-                ClusterNode node = ctx.discovery().node(nodeId);
+                ClusterNode node = cctx.discovery().node(nodeId);
 
                 // Node left the grid.
                 if (node == null)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index c3cc50a..bf3ec95 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -38,8 +38,8 @@ import org.jdk8.backport.*;
 import org.jetbrains.annotations.*;
 
 import javax.cache.*;
+import javax.cache.Cache.*;
 import javax.cache.expiry.*;
-import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -106,9 +106,6 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
     /** Return value require flag. */
     private final boolean retval;
 
-    /** Cached entry if keys size is 1. */
-    private GridCacheEntryEx<K, V> cached;
-
     /** Expiry policy. */
     private final ExpiryPolicy expiryPlc;
 
@@ -149,28 +146,10 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
     private volatile long mapTime;
 
     /**
-     * Empty constructor required by {@link Externalizable}.
-     */
-    public GridNearAtomicUpdateFuture() {
-        cctx = null;
-        mappings = null;
-        futVer = null;
-        retval = false;
-        fastMap = false;
-        expiryPlc = null;
-        filter = null;
-        syncMode = null;
-        op = null;
-        nearEnabled = false;
-        subjId = null;
-        taskNameHash = 0;
-    }
-
-    /**
      * @param cctx Cache context.
      * @param cache Cache instance.
-     * @param op Update operation.
      * @param syncMode Write synchronization mode.
+     * @param op Update operation.
      * @param keys Keys to update.
      * @param vals Values or transform closure.
      * @param invokeArgs Optional arguments for entry processor.
@@ -178,7 +157,6 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
      * @param conflictRmvVals Conflict remove values (optional).
      * @param retval Return value require flag.
      * @param rawRetval {@code True} if should return {@code GridCacheReturn} as future result.
-     * @param cached Cached entry if keys size is 1.
      * @param expiryPlc Expiry policy explicitly specified for cache operation.
      * @param filter Entry filter.
      * @param subjId Subject ID.
@@ -196,20 +174,18 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
         @Nullable Collection<GridCacheVersion> conflictRmvVals,
         final boolean retval,
         final boolean rawRetval,
-        @Nullable GridCacheEntryEx<K, V> cached,
         @Nullable ExpiryPolicy expiryPlc,
-        final IgnitePredicate<Cache.Entry<K, V>>[] filter,
+        final IgnitePredicate<Entry<K, V>>[] filter,
         UUID subjId,
         int taskNameHash
     ) {
-        super(cctx.kernalContext());
+        super();
 
         this.rawRetval = rawRetval;
 
         assert vals == null || vals.size() == keys.size();
         assert conflictPutVals == null || conflictPutVals.size() == keys.size();
         assert conflictRmvVals == null || conflictRmvVals.size() == keys.size();
-        assert cached == null || keys.size() == 1;
         assert subjId != null;
 
         this.cctx = cctx;
@@ -222,13 +198,13 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
         this.conflictPutVals = conflictPutVals;
         this.conflictRmvVals = conflictRmvVals;
         this.retval = retval;
-        this.cached = cached;
         this.expiryPlc = expiryPlc;
         this.filter = filter;
         this.subjId = subjId;
         this.taskNameHash = taskNameHash;
 
-        log = U.logger(ctx, logRef, GridFutureAdapter.class);
+        if (log == null)
+            log = U.logger(cctx.kernalContext(), logRef, GridFutureAdapter.class);
 
         mappings = new ConcurrentHashMap8<>(keys.size(), 1.0f);
 
@@ -781,7 +757,7 @@ public class GridNearAtomicUpdateFuture<K, V> extends GridFutureAdapter<Object>
         singleNodeId = nodeId;
         singleReq = req;
 
-        if (ctx.localNodeId().equals(nodeId)) {
+        if (cctx.localNodeId().equals(nodeId)) {
             cache.updateAllAsyncInternal(nodeId, req,
                 new CI2<GridNearAtomicUpdateRequest<K, V>, GridNearAtomicUpdateResponse<K, V>>() {
                     @Override public void apply(GridNearAtomicUpdateRequest<K, V> req,

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index cdb1759..f15c66e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -167,7 +167,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
         ctx.checkSecurity(GridSecurityPermission.CACHE_READ);
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         IgniteTxLocalAdapter<K, V> tx = ctx.tm().threadLocalTx();
 
@@ -232,7 +232,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
         boolean skipVals
     ) {
         if (keys == null || keys.isEmpty())
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         if (keyCheck)
             validateCacheKeys(keys);
@@ -308,7 +308,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
                         break; // While.
                     }
                     catch (IgniteCheckedException e) {
-                        return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                        return new GridFinishedFuture<>(e);
                     }
                     finally {
                         if (entry != null)
@@ -325,7 +325,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
             if (success) {
                 sendTtlUpdateRequest(expiryPlc);
 
-                return ctx.wrapCloneMap(new GridFinishedFuture<>(ctx.kernalContext(), locVals));
+                return ctx.wrapCloneMap(new GridFinishedFuture<>(locVals));
             }
         }
 
@@ -625,11 +625,11 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
                     filter);
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                return new GridFinishedFuture<>(e);
             }
         }
         else {
-            return new GridEmbeddedFuture<>(true, keyFut,
+            return new GridEmbeddedFuture<>(keyFut,
                 new C2<Object, Exception, IgniteInternalFuture<Exception>>() {
                     @Override public IgniteInternalFuture<Exception> apply(Object o, Exception exx) {
                         if (exx != null)
@@ -646,8 +646,8 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
                             accessTtl,
                             filter);
                     }
-                },
-                ctx.kernalContext());
+                }
+            );
         }
     }
 
@@ -731,7 +731,6 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
             fut.map();
 
             return new GridDhtEmbeddedFuture<>(
-                ctx.kernalContext(),
                 fut,
                 new C2<Boolean, Exception, Exception>() {
                     @Override public Exception apply(Boolean b, Exception e) {
@@ -742,7 +741,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
 
                         return e;
                     }
-                });
+                }, false);
         }
         else {
             // Handle implicit locks for pessimistic transactions.
@@ -758,7 +757,6 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
                 accessTtl);
 
             return new GridDhtEmbeddedFuture<>(
-                ctx.kernalContext(),
                 txFut,
                 new C2<GridCacheReturn<V>, Exception, Exception>() {
                     @Override public Exception apply(GridCacheReturn<V> ret,
@@ -770,7 +768,7 @@ public class GridDhtColocatedCache<K, V> extends GridDhtTransactionalCacheAdapte
 
                         return e;
                     }
-                });
+                }, false);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index 21f6364..88c7f63 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -159,7 +159,7 @@ public final class GridDhtColocatedLockFuture<K, V> extends GridCompoundIdentity
 
         futId = IgniteUuid.randomUuid();
 
-        log = U.logger(ctx, logRef, GridDhtColocatedLockFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridDhtColocatedLockFuture.class);
 
         if (timeout > 0) {
             timeoutObj = new LockTimeoutObject();
@@ -888,7 +888,6 @@ public final class GridDhtColocatedLockFuture<K, V> extends GridCompoundIdentity
 
         // Add new future.
         add(new GridEmbeddedFuture<>(
-            cctx.kernalContext(),
             fut,
             new C2<Exception, Exception, Boolean>() {
                 @Override public Boolean apply(Exception resEx, Exception e) {
@@ -934,7 +933,8 @@ public final class GridDhtColocatedLockFuture<K, V> extends GridCompoundIdentity
 
                     return true;
                 }
-            }
+            },
+            false
         ));
     }
 
@@ -1120,7 +1120,7 @@ public final class GridDhtColocatedLockFuture<K, V> extends GridCompoundIdentity
          */
         MiniFuture(ClusterNode node, Collection<K> keys,
             Deque<GridNearLockMapping<K, V>> mappings) {
-            super(cctx.kernalContext());
+            super();
 
             this.node = node;
             this.keys = keys;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
index 170a0c0..7f655df 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
@@ -52,6 +52,9 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
     /** Logger reference. */
     private static final AtomicReference<IgniteLogger> logRef = new AtomicReference<>();
 
+    /** Logger. */
+    private static IgniteLogger log;
+
     /** Wait for 1 second for topology to change. */
     private static final long REMAP_PAUSE = 1000;
 
@@ -61,9 +64,6 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
     /** Topology. */
     private GridDhtPartitionTopology<K, V> top;
 
-    /** Logger. */
-    private IgniteLogger log;
-
     /** Keys to request. */
     private Collection<? extends K> keys;
 
@@ -91,8 +91,11 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
      * @param keys Keys.
      * @param preloader Preloader.
      */
-    public GridDhtForceKeysFuture(GridCacheContext<K, V> cctx, long topVer, Collection<? extends K> keys,
-        GridDhtPreloader<K, V> preloader) {
+    public GridDhtForceKeysFuture(
+        GridCacheContext<K, V> cctx,
+        long topVer, Collection<? extends K> keys,
+        GridDhtPreloader<K, V> preloader
+    ) {
         super(cctx.kernalContext());
 
         assert topVer != 0 : topVer;
@@ -105,9 +108,8 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
 
         top = cctx.dht().topology();
 
-        log = U.logger(ctx, logRef, GridDhtForceKeysFuture.class);
-
-        syncNotify(true);
+        if (log == null)
+            log = U.logger(cctx.kernalContext(), logRef, GridDhtForceKeysFuture.class);
     }
 
     /**
@@ -405,7 +407,7 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
          * @param exc Exclude node list.
          */
         MiniFuture(ClusterNode node, Collection<K> keys, int curTopVer, Collection<ClusterNode> exc) {
-            super(cctx.kernalContext());
+            super();
 
             assert node != null;
             assert curTopVer > 0;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java
index 6a1f7a1..941ffb7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemandPool.java
@@ -1051,7 +1051,7 @@ public class GridDhtPartitionDemandPool<K, V> {
          * @param workers List of workers.
          */
         private SyncFuture(Collection<DemandWorker> workers) {
-            super(cctx.kernalContext());
+            super();
 
             assert workers.size() == poolSize();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index db9bd08..ef77cce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -150,9 +150,13 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
      * @param discoEvt Discovery event.
      * @param exchId Exchange id.
      */
-    public GridDhtPartitionsExchangeFuture(GridCacheSharedContext<K, V> cctx, boolean reassign, DiscoveryEvent discoEvt,
-        GridDhtPartitionExchangeId exchId) {
-        super(cctx.kernalContext());
+    public GridDhtPartitionsExchangeFuture(
+        GridCacheSharedContext<K, V> cctx,
+        boolean reassign,
+        DiscoveryEvent discoEvt,
+        GridDhtPartitionExchangeId exchId
+    ) {
+        super();
         dummy = true;
         forcePreload = false;
 
@@ -161,8 +165,6 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
         this.discoEvt = discoEvt;
         this.cctx = cctx;
 
-        syncNotify(true);
-
         onDone(exchId.topologyVersion());
     }
 
@@ -176,7 +178,7 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
      */
     public GridDhtPartitionsExchangeFuture(GridCacheSharedContext<K, V> cctx, DiscoveryEvent discoEvt,
         GridDhtPartitionExchangeId exchId) {
-        super(cctx.kernalContext());
+        super();
         dummy = false;
         forcePreload = true;
 
@@ -186,8 +188,6 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
 
         reassign = true;
 
-        syncNotify(true);
-
         onDone(exchId.topologyVersion());
     }
 
@@ -198,9 +198,7 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
      */
     public GridDhtPartitionsExchangeFuture(GridCacheSharedContext<K, V> cctx, ReadWriteLock busyLock,
         GridDhtPartitionExchangeId exchId) {
-        super(cctx.kernalContext());
-
-        syncNotify(true);
+        super();
 
         assert busyLock != null;
         assert exchId != null;
@@ -220,7 +218,7 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
 
         assert oldestNode.get() != null;
 
-        initFut = new GridFutureAdapter<>(ctx, true);
+        initFut = new GridFutureAdapter<>();
 
         if (log.isDebugEnabled())
             log.debug("Creating exchange future [localNode=" + cctx.localNodeId() +
@@ -805,7 +803,7 @@ public class GridDhtPartitionsExchangeFuture<K, V> extends GridFutureAdapter<Lon
                 log.debug("Received full partition map from unexpected node [oldest=" + curOldest.id() +
                     ", unexpectedNodeId=" + nodeId + ']');
 
-            ClusterNode sender = ctx.discovery().node(nodeId);
+            ClusterNode sender = cctx.discovery().node(nodeId);
 
             if (sender == null) {
                 if (log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
index 0821431..ae28dba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
@@ -120,7 +120,7 @@ public class GridDhtPreloader<K, V> extends GridCachePreloaderAdapter<K, V> {
 
         top = cctx.dht().topology();
 
-        startFut = new GridFutureAdapter<>(cctx.kernalContext(), false);
+        startFut = new GridFutureAdapter<>();
     }
 
     /** {@inheritDoc} */
@@ -499,7 +499,12 @@ public class GridDhtPreloader<K, V> extends GridCachePreloaderAdapter<K, V> {
             if (topReadyFut == null)
                 startFut.listenAsync(new CI1<IgniteInternalFuture<?>>() {
                     @Override public void apply(IgniteInternalFuture<?> syncFut) {
-                        fut.init();
+                        cctx.kernalContext().closure().runLocalSafe(
+                            new Runnable() {
+                                @Override public void run() {
+                                    fut.init();
+                                }
+                            });
                     }
                 });
             else {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 22403ef..9b738fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -374,7 +374,7 @@ public class GridNearAtomicCache<K, V> extends GridNearCacheAdapter<K, V> {
         ctx.checkSecurity(GridSecurityPermission.CACHE_READ);
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         GridCacheProjectionImpl<K, V> prj = ctx.projectionPerCall();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
index 94d2e96..6555865 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheAdapter.java
@@ -277,7 +277,7 @@ public abstract class GridNearCacheAdapter<K, V> extends GridDistributedCacheAda
         boolean skipVal
     ) {
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         if (keyCheck)
             validateCacheKeys(keys);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
index 9628f3b..ca07dec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearGetFuture.java
@@ -161,7 +161,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
 
         ver = tx == null ? cctx.versions().next() : tx.xidVersion();
 
-        log = U.logger(ctx, logRef, GridNearGetFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridNearGetFuture.class);
     }
 
     /**
@@ -347,7 +347,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
                             remapKeys.add(key);
                     }
 
-                    long updTopVer = ctx.discovery().topologyVersion();
+                    long updTopVer = cctx.discovery().topologyVersion();
 
                     assert updTopVer > topVer : "Got invalid partitions for local node but topology version did " +
                         "not change [topVer=" + topVer + ", updTopVer=" + updTopVer +
@@ -511,7 +511,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
                         key0 = (K)cctx.unwrapPortableIfNeeded(key, !deserializePortable);
                     }
 
-                    add(new GridFinishedFuture<>(cctx.kernalContext(), Collections.singletonMap(key0, v)));
+                    add(new GridFinishedFuture<>(Collections.singletonMap(key0, v)));
                 }
                 else {
                     if (primary == null)
@@ -704,8 +704,6 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
          * @param topVer Topology version.
          */
         MiniFuture(ClusterNode node, LinkedHashMap<K, Boolean> keys, Map<K, GridCacheVersion> savedVers, long topVer) {
-            super(cctx.kernalContext());
-
             this.node = node;
             this.keys = keys;
             this.savedVers = savedVers;
@@ -751,7 +749,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
             if (log.isDebugEnabled())
                 log.debug("Remote node left grid while sending or waiting for reply (will retry): " + this);
 
-            long updTopVer = ctx.discovery().topologyVersion();
+            long updTopVer = cctx.discovery().topologyVersion();
 
             if (updTopVer > topVer) {
                 // Remap.
@@ -760,12 +758,13 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
                 onDone(Collections.<K, V>emptyMap());
             }
             else {
-                final RemapTimeoutObject timeout = new RemapTimeoutObject(ctx.config().getNetworkTimeout(), topVer, e);
+                final RemapTimeoutObject timeout = new RemapTimeoutObject(
+                    cctx.kernalContext().config().getNetworkTimeout(), topVer, e);
 
-                ctx.discovery().topologyFuture(topVer + 1).listenAsync(new CI1<IgniteInternalFuture<Long>>() {
+                cctx.discovery().topologyFuture(topVer + 1).listenAsync(new CI1<IgniteInternalFuture<Long>>() {
                     @Override public void apply(IgniteInternalFuture<Long> longIgniteFuture) {
                         if (timeout.finish()) {
-                            ctx.timeout().removeTimeoutObject(timeout);
+                            cctx.kernalContext().timeout().removeTimeoutObject(timeout);
 
                             // Remap.
                             map(keys.keySet(), F.t(node, keys), cctx.affinity().affinityTopologyVersion());
@@ -775,7 +774,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
                     }
                 });
 
-                ctx.timeout().addTimeoutObject(timeout);
+                cctx.kernalContext().timeout().addTimeoutObject(timeout);
             }
         }
 
@@ -812,7 +811,7 @@ public final class GridNearGetFuture<K, V> extends GridCompoundIdentityFuture<Ma
                     log.debug("Remapping mini get future [invalidParts=" + invalidParts + ", fut=" + this + ']');
 
                 // Need to wait for next topology version to remap.
-                IgniteInternalFuture<Long> topFut = ctx.discovery().topologyFuture(rmtTopVer);
+                IgniteInternalFuture<Long> topFut = cctx.discovery().topologyFuture(rmtTopVer);
 
                 topFut.listenAsync(new CIX1<IgniteInternalFuture<Long>>() {
                     @Override public void applyx(IgniteInternalFuture<Long> fut) throws IgniteCheckedException {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 210772d..f7f7e41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -171,7 +171,7 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B
 
         entries = new ArrayList<>(keys.size());
 
-        log = U.logger(ctx, logRef, GridNearLockFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridNearLockFuture.class);
 
         if (timeout > 0) {
             timeoutObj = new LockTimeoutObject();
@@ -965,7 +965,6 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B
 
             // Add new future.
             add(new GridEmbeddedFuture<>(
-                cctx.kernalContext(),
                 fut,
                 new C2<GridNearLockResponse<K, V>, Exception, Boolean>() {
                     @Override public Boolean apply(GridNearLockResponse<K, V> res, Exception e) {
@@ -1092,7 +1091,8 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B
 
                         return true;
                     }
-                }
+                },
+                false
             ));
         }
         else {
@@ -1259,7 +1259,7 @@ public final class GridNearLockFuture<K, V> extends GridCompoundIdentityFuture<B
          */
         MiniFuture(ClusterNode node, Collection<K> keys,
             ConcurrentLinkedDeque8<GridNearLockMapping<K, V>> mappings) {
-            super(cctx.kernalContext());
+            super();
 
             this.node = node;
             this.keys = keys;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index d6ec9dd..ff595c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -109,7 +109,7 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
         ctx.checkSecurity(GridSecurityPermission.CACHE_READ);
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         IgniteTxLocalAdapter<K, V> tx = ctx.tm().threadLocalTx();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index f3811c6..08b6a58 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -102,7 +102,7 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu
 
         futId = IgniteUuid.randomUuid();
 
-        log = U.logger(ctx, logRef, GridNearTxFinishFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridNearTxFinishFuture.class);
     }
 
     /** {@inheritDoc} */
@@ -434,7 +434,7 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu
          * @param m Mapping.
          */
         MiniFuture(GridDistributedTxMapping<K, V> m) {
-            super(cctx.kernalContext());
+            super();
 
             this.m = m;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index 06e4767..7cad8cc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -884,12 +884,12 @@ public class GridNearTxLocal<K, V> extends GridDhtTxLocalAdapter<K, V> {
     ) {
         if (state() != PREPARING) {
             if (timedOut())
-                return new GridFinishedFuture<>(cctx.kernalContext(),
+                return new GridFinishedFuture<>(
                     new IgniteTxTimeoutCheckedException("Transaction timed out: " + this));
 
             setRollbackOnly();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(),
+            return new GridFinishedFuture<>(
                 new IgniteCheckedException("Invalid transaction state for prepare [state=" + state() + ", tx=" + this + ']'));
         }
 
@@ -965,7 +965,7 @@ public class GridNearTxLocal<K, V> extends GridDhtTxLocalAdapter<K, V> {
             if (prep != null)
                 return (IgniteInternalFuture<IgniteInternalTx>)(IgniteInternalFuture)prep;
 
-            return new GridFinishedFuture<IgniteInternalTx>(cctx.kernalContext(), this);
+            return new GridFinishedFuture<IgniteInternalTx>(this);
         }
 
         final GridDhtTxFinishFuture<K, V> fut = new GridDhtTxFinishFuture<>(cctx, this, /*commit*/true);
@@ -1076,13 +1076,13 @@ public class GridNearTxLocal<K, V> extends GridDhtTxLocalAdapter<K, V> {
             checkValid();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         final GridCacheReturn<V> ret = new GridCacheReturn<>(false);
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(cctx.kernalContext(), ret);
+            return new GridFinishedFuture<>(ret);
 
         init();
 
@@ -1108,8 +1108,8 @@ public class GridNearTxLocal<K, V> extends GridDhtTxLocalAdapter<K, V> {
 
                     return ret;
                 }
-            },
-            cctx.kernalContext());
+            }
+        );
     }
 
     /** {@inheritDoc} */
@@ -1252,7 +1252,7 @@ public class GridNearTxLocal<K, V> extends GridDhtTxLocalAdapter<K, V> {
          * @param tx Transaction.
          */
         private PessimisticPrepareFuture(GridKernalContext ctx, IgniteInternalTx<K, V> tx) {
-            super(ctx);
+            super();
             this.tx = tx;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java
index 18fda47..ad61f13 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareFuture.java
@@ -116,7 +116,7 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut
 
         futId = IgniteUuid.randomUuid();
 
-        log = U.logger(ctx, logRef, GridNearTxPrepareFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridNearTxPrepareFuture.class);
     }
 
     /** {@inheritDoc} */
@@ -362,11 +362,13 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut
                     }
                 }
                 else {
-                    topFut.syncNotify(false);
-
                     topFut.listenAsync(new CI1<IgniteInternalFuture<Long>>() {
                         @Override public void apply(IgniteInternalFuture<Long> t) {
-                            prepare();
+                            cctx.kernalContext().closure().runLocalSafe(new Runnable() {
+                                @Override public void run() {
+                                    prepare();
+                                }
+                            });
                         }
                     });
                 }
@@ -859,7 +861,7 @@ public final class GridNearTxPrepareFuture<K, V> extends GridCompoundIdentityFut
          */
         MiniFuture(GridDistributedTxMapping<K, V> m,
             ConcurrentLinkedDeque8<GridDistributedTxMapping<K, V>> mappings) {
-            super(cctx.kernalContext());
+            super();
 
             this.m = m;
             this.mappings = mappings;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
index 53b216c..5833270 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java
@@ -127,7 +127,7 @@ public class GridLocalCache<K, V> extends GridCacheAdapter<K, V> {
     public IgniteInternalFuture<Boolean> lockAllAsync(Collection<? extends K> keys, long timeout,
         @Nullable IgniteTxLocalEx<K, V> tx, IgnitePredicate<Cache.Entry<K, V>>[] filter) {
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), true);
+            return new GridFinishedFuture<>(true);
 
         GridLocalLockFuture<K, V> fut = new GridLocalLockFuture<>(ctx, keys, tx, this, timeout, filter);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
index d4918c1..2048e5d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
@@ -112,7 +112,7 @@ public final class GridLocalLockFuture<K, V> extends GridFutureAdapter<Boolean>
         GridLocalCache<K, V> cache,
         long timeout,
         IgnitePredicate<Cache.Entry<K, V>>[] filter) {
-        super(cctx.kernalContext());
+        super();
 
         assert keys != null;
         assert cache != null;
@@ -131,7 +131,7 @@ public final class GridLocalLockFuture<K, V> extends GridFutureAdapter<Boolean>
 
         entries = new ArrayList<>(keys.size());
 
-        log = U.logger(ctx, logRef, GridLocalLockFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridLocalLockFuture.class);
 
         if (timeout > 0) {
             timeoutObj = new LockTimeoutObject();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTx.java
index 6727f7e..da7f73b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTx.java
@@ -111,10 +111,10 @@ class GridLocalTx<K, V> extends IgniteTxLocalAdapter<K, V> {
         try {
             prepare();
 
-            return new GridFinishedFuture<IgniteInternalTx<K, V>>(cctx.kernalContext(), this);
+            return new GridFinishedFuture<IgniteInternalTx<K, V>>(this);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -153,7 +153,7 @@ class GridLocalTx<K, V> extends IgniteTxLocalAdapter<K, V> {
         catch (IgniteCheckedException e) {
             state(UNKNOWN);
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         GridLocalTxFuture<K, V> fut = this.fut.get();
@@ -185,10 +185,10 @@ class GridLocalTx<K, V> extends IgniteTxLocalAdapter<K, V> {
 
             state(ROLLED_BACK);
 
-            return new GridFinishedFuture<IgniteInternalTx>(cctx.kernalContext(), this);
+            return new GridFinishedFuture<IgniteInternalTx>(this);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java
index 66a5eb2..b9934fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalTxFuture.java
@@ -83,7 +83,7 @@ final class GridLocalTxFuture<K, V> extends GridFutureAdapter<IgniteInternalTx<K
     GridLocalTxFuture(
         GridCacheSharedContext<K, V> cctx,
         GridLocalTx<K, V> tx) {
-        super(cctx.kernalContext());
+        super();
 
         assert cctx != null;
         assert tx != null;
@@ -91,7 +91,7 @@ final class GridLocalTxFuture<K, V> extends GridFutureAdapter<IgniteInternalTx<K
         this.cctx = cctx;
         this.tx = tx;
 
-        log = U.logger(ctx, logRef,  GridLocalTxFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef,  GridLocalTxFuture.class);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
index c3da493..5988069 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
@@ -1554,7 +1554,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> {
         boolean invalidate,
         long accessTtl,
         IgnitePredicate<Cache.Entry<K, V>>[] filter) {
-        return new GridFinishedFutureEx<>(new UnsupportedOperationException("Locks are not supported for " +
+        return new GridFinishedFuture<>(new UnsupportedOperationException("Locks are not supported for " +
             "CacheAtomicityMode.ATOMIC mode (use CacheAtomicityMode.TRANSACTIONAL instead)"));
     }
 
@@ -1563,7 +1563,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> {
     @Override public IgniteInternalFuture<Boolean> lockAllAsync(@Nullable Collection<? extends K> keys,
         long timeout,
         @Nullable IgnitePredicate<Cache.Entry<K, V>>... filter) {
-        return new GridFinishedFutureEx<>(new UnsupportedOperationException("Locks are not supported for " +
+        return new GridFinishedFuture<>(new UnsupportedOperationException("Locks are not supported for " +
             "CacheAtomicityMode.ATOMIC mode (use CacheAtomicityMode.TRANSACTIONAL instead)"));
     }
 
@@ -1613,7 +1613,7 @@ public class GridLocalAtomicCache<K, V> extends GridCacheAdapter<K, V> {
                         @Override public IgniteInternalFuture apply(Object t, Exception e) {
                             return ctx.closures().callLocalSafe(op);
                         }
-                    }, ctx.kernalContext());
+                    });
 
                 saveFuture(holder, f);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedFieldsQueryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedFieldsQueryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedFieldsQueryFuture.java
index 4f668e6..1093c4e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedFieldsQueryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheDistributedFieldsQueryFuture.java
@@ -56,7 +56,7 @@ public class GridCacheDistributedFieldsQueryFuture
         GridCacheQueryBean qry, Iterable<ClusterNode> nodes) {
         super((GridCacheContext<Object, Object>)ctx, reqId, qry, nodes);
 
-        metaFut = new GridFutureAdapter<>(ctx.kernalContext());
+        metaFut = new GridFutureAdapter<>();
 
         if (!qry.query().includeMetadata())
             metaFut.onDone();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheFieldsQueryErrorFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheFieldsQueryErrorFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheFieldsQueryErrorFuture.java
index 93a8fd9..222abc1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheFieldsQueryErrorFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheFieldsQueryErrorFuture.java
@@ -48,6 +48,6 @@ public class GridCacheFieldsQueryErrorFuture extends GridCacheQueryErrorFuture<L
      * @return Metadata.
      */
     public IgniteInternalFuture<List<GridQueryFieldMetadata>> metadata() {
-        return new GridFinishedFuture<>(ctx, incMeta ? Collections.<GridQueryFieldMetadata>emptyList() : null);
+        return new GridFinishedFuture<>(incMeta ? Collections.<GridQueryFieldMetadata>emptyList() : null);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalFieldsQueryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalFieldsQueryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalFieldsQueryFuture.java
index 782d9da..70d97fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalFieldsQueryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalFieldsQueryFuture.java
@@ -52,7 +52,7 @@ public class GridCacheLocalFieldsQueryFuture
     public GridCacheLocalFieldsQueryFuture(GridCacheContext<?, ?> ctx, GridCacheQueryBean qry) {
         super((GridCacheContext<Object, Object>)ctx, qry);
 
-        metaFut = new GridFutureAdapter<>(ctx.kernalContext());
+        metaFut = new GridFutureAdapter<>();
 
         if (!qry.query().includeMetadata())
             metaFut.onDone();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
index 3d8efbf..8831b5d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheLocalQueryFuture.java
@@ -63,7 +63,7 @@ public class GridCacheLocalQueryFuture<K, V, R> extends GridCacheQueryFutureAdap
      * Executes query runnable.
      */
     void execute() {
-        fut = ctx.closure().runLocalSafe(run, true);
+        fut = cctx.kernalContext().closure().runLocalSafe(run, true);
     }
 
     /** {@inheritDoc} */
@@ -130,7 +130,7 @@ public class GridCacheLocalQueryFuture<K, V, R> extends GridCacheQueryFutureAdap
                 rdc,
                 qry.query(),
                 GridCacheLocalQueryFuture.this,
-                ctx.localNodeId(),
+                cctx.localNodeId(),
                 cctx.io().nextIoId(),
                 qry.query().includeMetadata(),
                 true,

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryErrorFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryErrorFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryErrorFuture.java
index f4fcb37..627d6b5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryErrorFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryErrorFuture.java
@@ -36,7 +36,7 @@ public class GridCacheQueryErrorFuture<T> extends GridFinishedFuture<Collection<
      * @param err Error.
      */
     public GridCacheQueryErrorFuture(GridKernalContext ctx, Throwable err) {
-        super(ctx, err);
+        super(err);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
index 0748936..9e4e3d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryFutureAdapter.java
@@ -101,13 +101,13 @@ public abstract class GridCacheQueryFutureAdapter<K, V, R> extends GridFutureAda
      * @param loc Local query or not.
      */
     protected GridCacheQueryFutureAdapter(GridCacheContext<K, V> cctx, GridCacheQueryBean qry, boolean loc) {
-        super(cctx.kernalContext());
+        super();
 
         this.cctx = cctx;
         this.qry = qry;
         this.loc = loc;
 
-        log = U.logger(ctx, logRef, GridCacheQueryFutureAdapter.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridCacheQueryFutureAdapter.class);
 
         startTime = U.currentTimeMillis();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/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 8fa48aa..b4fbef5 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
@@ -1511,7 +1511,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
             fut = futs.get(qryInfo.requestId());
 
             if (fut == null) {
-                futs.put(qryInfo.requestId(), fut = new GridFutureAdapter<>(cctx.kernalContext()));
+                futs.put(qryInfo.requestId(), fut = new GridFutureAdapter<>());
 
                 exec = true;
             }
@@ -1642,7 +1642,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
 
             if (fut == null) {
                 resMap.put(qryInfo.requestId(), fut =
-                    new GridFutureAdapter<>(cctx.kernalContext()));
+                    new GridFutureAdapter<>());
 
                 exec = true;
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index abdb99c..409c381 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -959,7 +959,7 @@ public abstract class IgniteTxAdapter<K, V> extends GridMetadataAwareAdapter
         GridFutureAdapter<IgniteInternalTx> fut = finFut.get();
 
         if (fut == null) {
-            fut = new GridFutureAdapter<IgniteInternalTx>(cctx.kernalContext()) {
+            fut = new GridFutureAdapter<IgniteInternalTx>() {
                 @Override public String toString() {
                     return S.toString(GridFutureAdapter.class, this, "tx", IgniteTxAdapter.this);
                 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index b29f721..5115781 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@ -173,10 +173,9 @@ public class IgniteTxHandler<K, V> {
         final IgniteInClosure<GridNearTxPrepareResponse<K, V>> completeCb
     ) {
 
-        IgniteInternalFuture<Object> fut = new GridFinishedFutureEx<>(); // TODO force preload keys.
+        IgniteInternalFuture<Object> fut = new GridFinishedFuture<>(); // TODO force preload keys.
 
         return new GridEmbeddedFuture<>(
-            ctx.kernalContext(),
             fut,
             new C2<Object, Exception, IgniteInternalFuture<IgniteInternalTx<K, V>>>() {
                 @Override public IgniteInternalFuture<IgniteInternalTx<K, V>> apply(Object o, Exception ex) {
@@ -240,7 +239,7 @@ public class IgniteTxHandler<K, V> {
                 e.unmarshal(ctx, false, ctx.deploy().globalLoader());
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         GridDhtTxLocal<K, V> tx;
@@ -343,7 +342,7 @@ public class IgniteTxHandler<K, V> {
             return fut;
         }
         else
-            return new GridFinishedFuture<>(ctx.kernalContext(), (IgniteInternalTx<K, V>)null);
+            return new GridFinishedFuture<>((IgniteInternalTx<K, V>)null);
     }
 
     /**
@@ -443,7 +442,7 @@ public class IgniteTxHandler<K, V> {
 
         // Transaction on local cache only.
         if (locTx != null && !locTx.nearLocallyMapped() && !locTx.colocatedLocallyMapped())
-            return new GridFinishedFutureEx<IgniteInternalTx>(locTx);
+            return new GridFinishedFuture<IgniteInternalTx>(locTx);
 
         if (log.isDebugEnabled())
             log.debug("Processing near tx finish request [nodeId=" + nodeId + ", req=" + req + "]");
@@ -607,7 +606,7 @@ public class IgniteTxHandler<K, V> {
                 return rollbackFut;
             }
 
-            return new GridFinishedFuture<>(ctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -637,7 +636,7 @@ public class IgniteTxHandler<K, V> {
             if (tx != null)
                 return tx.rollbackAsync();
 
-            return new GridFinishedFuture<>(ctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index 8bc5230..67d33fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -356,14 +356,14 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     for (K key : keys)
                         c.apply(key, null);
 
-                    return new GridFinishedFuture<>(cctx.kernalContext(), false);
+                    return new GridFinishedFuture<>(false);
                 }
 
-                return new GridFinishedFuture<>(cctx.kernalContext(),
+                return new GridFinishedFuture<>(
                     cacheCtx.store().loadAllFromStore(this, keys, c));
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                return new GridFinishedFuture<>(e);
             }
         }
         else
@@ -1413,7 +1413,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
 
         final Collection<K> loaded = new HashSet<>();
 
-        return new GridEmbeddedFuture<>(cctx.kernalContext(),
+        return new GridEmbeddedFuture<>(
             loadMissing(
                 cacheCtx,
                 true, false, missedMap.keySet(), deserializePortable, skipVals, new CI2<K, V>() {
@@ -1564,7 +1564,8 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
 
                     return map;
                 }
-            });
+            },
+        false);
     }
 
     /** {@inheritDoc} */
@@ -1575,7 +1576,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
         final boolean deserializePortable,
         final boolean skipVals) {
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(cctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         init();
 
@@ -1605,7 +1606,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                 skipVals);
 
             if (single && missed.isEmpty())
-                return new GridFinishedFuture<>(cctx.kernalContext(), retMap);
+                return new GridFinishedFuture<>(retMap);
 
             // Handle locks.
             if (pessimistic() && !readCommitted() && !groupLock() && !skipVals) {
@@ -1712,7 +1713,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                         if (!missed.isEmpty() && (cacheCtx.isReplicated() || cacheCtx.isLocal()))
                             return checkMissed(cacheCtx, retMap, missed, null, deserializePortable, skipVals);
 
-                        return new GridFinishedFuture<>(cctx.kernalContext(), Collections.<K, V>emptyMap());
+                        return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
                     }
                 };
 
@@ -1729,24 +1730,23 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                         IgniteInternalFuture<Map<K, V>> fut1 = plc2.apply(fut.get(), null);
 
                         return fut1.isDone() ?
-                            new GridFinishedFutureEx<>(finClos.apply(fut1.get(), null)) :
-                            new GridEmbeddedFuture<>(cctx.kernalContext(), fut1, finClos);
+                            new GridFinishedFuture<>(finClos.apply(fut1.get(), null)) :
+                            new GridEmbeddedFuture<>(fut1, finClos, false);
                     }
                     catch (GridClosureException e) {
-                        return new GridFinishedFuture<>(cctx.kernalContext(), e.unwrap());
+                        return new GridFinishedFuture<>(e.unwrap());
                     }
                     catch (IgniteCheckedException e) {
                         try {
                             return plc2.apply(false, e);
                         }
                         catch (Exception e1) {
-                            return new GridFinishedFuture<>(cctx.kernalContext(), e1);
+                            return new GridFinishedFuture<>(e1);
                         }
                     }
                 }
                 else {
                     return new GridEmbeddedFuture<>(
-                        cctx.kernalContext(),
                         fut,
                         plc2,
                         finClos);
@@ -1764,17 +1764,16 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                                 it.remove();
 
                     if (missed.isEmpty())
-                        return new GridFinishedFuture<>(cctx.kernalContext(), retMap);
+                        return new GridFinishedFuture<>(retMap);
 
                     return new GridEmbeddedFuture<>(
-                        cctx.kernalContext(),
                         // First future.
                         checkMissed(cacheCtx, retMap, missed, redos, deserializePortable, skipVals),
                         // Closure that returns another future, based on result from first.
                         new PMC<Map<K, V>>() {
                             @Override public IgniteInternalFuture<Map<K, V>> postMiss(Map<K, V> map) {
                                 if (redos.isEmpty())
-                                    return new GridFinishedFuture<>(cctx.kernalContext(),
+                                    return new GridFinishedFuture<>(
                                         Collections.<K, V>emptyMap());
 
                                 if (log.isDebugEnabled())
@@ -1807,13 +1806,13 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     );
                 }
 
-                return new GridFinishedFuture<>(cctx.kernalContext(), retMap);
+                return new GridFinishedFuture<>(retMap);
             }
         }
         catch (IgniteCheckedException e) {
             setRollbackOnly();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -1934,7 +1933,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
             addActiveCache(cacheCtx);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         Set<K> skipped = null;
@@ -2212,7 +2211,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
             }
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         if (missedForLoad != null) {
@@ -2240,7 +2239,6 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                 });
 
             return new GridEmbeddedFuture<>(
-                cctx.kernalContext(),
                 fut,
                 new C2<Boolean, Exception, Set<K>>() {
                     @Override public Set<K> apply(Boolean b, Exception e) {
@@ -2249,11 +2247,12 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
 
                         return Collections.emptySet();
                     }
-                }
+                },
+                false
             );
         }
 
-        return new GridFinishedFuture<>(cctx.kernalContext(), skipped);
+        return new GridFinishedFuture<>(skipped);
     }
 
     /**
@@ -2495,7 +2494,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     }
                 }
                 catch (IgniteException e) {
-                    return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
             }
             else
@@ -2512,7 +2511,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     }
                 }
                 catch (IgniteException e) {
-                    return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
             }
             else
@@ -2534,7 +2533,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
             checkValid();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         init();
@@ -2547,10 +2546,10 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     commit();
                 }
                 catch (IgniteCheckedException e) {
-                    return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), ret.success(true));
+            return new GridFinishedFuture<>(ret.success(true));
         }
 
         try {
@@ -2632,22 +2631,22 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                         return plc1.apply(fut.get(), null);
                     }
                     catch (GridClosureException e) {
-                        return new GridFinishedFuture<>(cctx.kernalContext(), e.unwrap());
+                        return new GridFinishedFuture<>(e.unwrap());
                     }
                     catch (IgniteCheckedException e) {
                         try {
                             return plc1.apply(false, e);
                         }
                         catch (Exception e1) {
-                            return new GridFinishedFuture<>(cctx.kernalContext(), e1);
+                            return new GridFinishedFuture<>(e1);
                         }
                     }
                 }
                 else
                     return new GridEmbeddedFuture<>(
                         fut,
-                        plc1,
-                        cctx.kernalContext());
+                        plc1
+                    );
             }
             else {
                 if (implicit()) {
@@ -2659,7 +2658,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                         loadFut.get();
                     }
                     catch (IgniteCheckedException e) {
-                        return new GridFinishedFutureEx<>(new GridCacheReturn<V>(), e);
+                        return new GridFinishedFuture<>(e);
                     }
 
                     return commitAsync().chain(new CX1<IgniteInternalFuture<IgniteInternalTx>, GridCacheReturn<V>>() {
@@ -2683,7 +2682,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
         catch (IgniteCheckedException e) {
             setRollbackOnly();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -2740,7 +2739,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     keys0 = null;
             }
             catch (IgniteException e) {
-                return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                return new GridFinishedFuture<>(e);
             }
         }
         else
@@ -2757,7 +2756,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
             checkValid();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         final GridCacheReturn<V> ret = new GridCacheReturn<>(false);
@@ -2768,11 +2767,11 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     commit();
                 }
                 catch (IgniteCheckedException e) {
-                    return new GridFinishedFuture<>(cctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
             }
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), ret.success(true));
+            return new GridFinishedFuture<>(ret.success(true));
         }
 
         init();
@@ -2856,22 +2855,22 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                         return plc1.apply(fut.get(), null);
                     }
                     catch (GridClosureException e) {
-                        return new GridFinishedFuture<>(cctx.kernalContext(), e.unwrap());
+                        return new GridFinishedFuture<>(e.unwrap());
                     }
                     catch (IgniteCheckedException e) {
                         try {
                             return plc1.apply(false, e);
                         }
                         catch (Exception e1) {
-                            return new GridFinishedFuture<>(cctx.kernalContext(), e1);
+                            return new GridFinishedFuture<>(e1);
                         }
                     }
                 }
                 else
                     return new GridEmbeddedFuture<>(
                         fut,
-                        plc1,
-                        cctx.kernalContext());
+                        plc1
+                    );
             }
             else {
                 if (implicit()) {
@@ -2900,7 +2899,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
         catch (IgniteCheckedException e) {
             setRollbackOnly();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -3005,12 +3004,12 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
                     isInvalidate(),
                     -1L,
                     CU.<K, V>empty()) :
-                new GridFinishedFuture<>(cctx.kernalContext());
+                new GridFinishedFuture<>();
         }
         catch (IgniteCheckedException e) {
             setRollbackOnly();
 
-            return new GridFinishedFuture<Object>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<Object>(e);
         }
     }
 
@@ -3467,7 +3466,7 @@ public abstract class IgniteTxLocalAdapter<K, V> extends IgniteTxAdapter<K, V>
 
                 rollback = false;
 
-                return new GridFinishedFuture<>(cctx.kernalContext(), r);
+                return new GridFinishedFuture<>(r);
             }
             catch (final IgniteCheckedException ex) {
                 if (commit && commitAfterLock())

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TransactionProxyImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TransactionProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TransactionProxyImpl.java
index 95f54a1..eef7cc6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TransactionProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/TransactionProxyImpl.java
@@ -295,7 +295,7 @@ public class TransactionProxyImpl<K, V> implements TransactionProxy, Externaliza
      * @param res Result to convert to finished future.
      */
     private void save(Object res) {
-        asyncRes = new IgniteFinishedFutureImplEx<>(res);
+        asyncRes = new IgniteFinishedFutureImpl<>(res);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
index 657539c..28b07e5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
@@ -472,10 +472,10 @@ public class GridClosureProcessor extends GridProcessorAdapter {
 
         try {
             if (job == null)
-                return new GridFinishedFuture<>(ctx);
+                return new GridFinishedFuture<>();
 
             if (F.isEmpty(nodes))
-                return new GridFinishedFuture<>(ctx, U.emptyTopologyException());
+                return new GridFinishedFuture<>(U.emptyTopologyException());
 
             ctx.task().setThreadContext(TC_NO_FAILOVER, true);
             ctx.task().setThreadContext(TC_SUBGRID, nodes);
@@ -504,10 +504,10 @@ public class GridClosureProcessor extends GridProcessorAdapter {
 
         try {
             if (F.isEmpty(jobs))
-                return new GridFinishedFuture<>(ctx);
+                return new GridFinishedFuture<>();
 
             if (F.isEmpty(nodes))
-                return new GridFinishedFuture<>(ctx, U.emptyTopologyException());
+                return new GridFinishedFuture<>(U.emptyTopologyException());
 
             ctx.task().setThreadContext(TC_NO_FAILOVER, true);
             ctx.task().setThreadContext(TC_SUBGRID, nodes);
@@ -585,7 +585,7 @@ public class GridClosureProcessor extends GridProcessorAdapter {
 
         try {
             if (F.isEmpty(nodes))
-                return new GridFinishedFuture<>(ctx, U.emptyTopologyException());
+                return new GridFinishedFuture<>(U.emptyTopologyException());
 
             ctx.task().setThreadContext(TC_SUBGRID, nodes);
 
@@ -608,7 +608,7 @@ public class GridClosureProcessor extends GridProcessorAdapter {
 
         try {
             if (F.isEmpty(nodes))
-                return new GridFinishedFuture<>(ctx, U.emptyTopologyException());
+                return new GridFinishedFuture<>(U.emptyTopologyException());
 
             ctx.task().setThreadContext(TC_SUBGRID, nodes);
             ctx.task().setThreadContext(TC_NO_FAILOVER, true);
@@ -731,7 +731,7 @@ public class GridClosureProcessor extends GridProcessorAdapter {
      */
     private IgniteInternalFuture<?> runLocal(@Nullable final Runnable c, GridClosurePolicy plc) throws IgniteCheckedException {
         if (c == null)
-            return new GridFinishedFuture(ctx);
+            return new GridFinishedFuture();
 
         enterBusy();
 
@@ -834,18 +834,18 @@ public class GridClosureProcessor extends GridProcessorAdapter {
                 try {
                     c.run();
 
-                    return new GridFinishedFuture(ctx);
+                    return new GridFinishedFuture();
                 }
                 catch (Throwable t) {
                     if (t instanceof Error)
                         U.error(log, "Closure execution failed with error.", t);
 
-                    return new GridFinishedFuture(ctx, U.cast(t));
+                    return new GridFinishedFuture(U.cast(t));
                 }
             }
             // If failed for other reasons - return error future.
             else
-                return new GridFinishedFuture(ctx, U.cast(e));
+                return new GridFinishedFuture(U.cast(e));
         }
     }
 
@@ -868,7 +868,7 @@ public class GridClosureProcessor extends GridProcessorAdapter {
      */
     private <R> IgniteInternalFuture<R> callLocal(@Nullable final Callable<R> c, GridClosurePolicy plc) throws IgniteCheckedException {
         if (c == null)
-            return new GridFinishedFuture<>(ctx);
+            return new GridFinishedFuture<>();
 
         enterBusy();
 
@@ -964,16 +964,16 @@ public class GridClosureProcessor extends GridProcessorAdapter {
                     ", closure=" + c + ']');
 
                 try {
-                    return new GridFinishedFuture<>(ctx, c.call());
+                    return new GridFinishedFuture<>(c.call());
                 }
                 // If failed again locally - return error future.
                 catch (Exception e2) {
-                    return new GridFinishedFuture<>(ctx, U.cast(e2));
+                    return new GridFinishedFuture<>(U.cast(e2));
                 }
             }
             // If failed for other reasons - return error future.
             else
-                return new GridFinishedFuture<>(ctx, U.cast(e));
+                return new GridFinishedFuture<>(U.cast(e));
         }
     }
 


[5/5] incubator-ignite git commit: futures: api cleanup

Posted by yz...@apache.org.
futures: api cleanup


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

Branch: refs/heads/ignite-futures-clenup
Commit: c1b46951fcb01de43a3df71b287cb69d89ab065b
Parents: 680b0ba
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed Mar 4 21:15:46 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed Mar 4 21:15:46 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/IgniteSystemProperties.java   |  20 -
 .../internal/ComputeTaskInternalFuture.java     |  41 +-
 .../ignite/internal/GridJobSessionImpl.java     |   2 +-
 .../ignite/internal/GridTaskSessionImpl.java    |   2 +-
 .../ignite/internal/IgniteInternalFuture.java   |  58 ---
 .../internal/cluster/IgniteClusterImpl.java     |   6 +-
 .../discovery/GridDiscoveryManager.java         |  10 +-
 .../eventstorage/GridEventStorageManager.java   |   6 +-
 .../affinity/GridAffinityAssignmentCache.java   |   2 +-
 .../affinity/GridAffinityProcessor.java         |   2 +-
 .../processors/cache/GridCacheAdapter.java      |  55 +-
 .../cache/GridCacheAffinityManager.java         |   2 +-
 .../cache/GridCacheEvictionManager.java         |   2 +-
 .../cache/GridCacheMultiTxFuture.java           |   7 +-
 .../processors/cache/GridCacheMvccManager.java  |   4 +-
 .../GridCachePartitionExchangeManager.java      |   2 +-
 .../cache/GridCachePreloaderAdapter.java        |   4 +-
 .../cache/GridCacheProjectionImpl.java          |  12 +-
 ...ridCacheOptimisticCheckPreparedTxFuture.java |   4 +-
 .../distributed/GridCacheTxFinishSync.java      |   2 +-
 .../GridDistributedCacheAdapter.java            |   2 +-
 .../GridDistributedTxRemoteAdapter.java         |   6 +-
 .../dht/GridDhtAssignmentFetchFuture.java       |  18 +-
 .../distributed/dht/GridDhtCacheAdapter.java    |   2 +-
 .../distributed/dht/GridDhtCacheEntry.java      |  12 +-
 .../distributed/dht/GridDhtEmbeddedFuture.java  |  24 +-
 .../distributed/dht/GridDhtFinishedFuture.java  |   4 +-
 .../cache/distributed/dht/GridDhtGetFuture.java |  25 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   4 +-
 .../distributed/dht/GridDhtLockFuture.java      |   6 +-
 .../dht/GridDhtTransactionalCacheAdapter.java   |  17 +-
 .../distributed/dht/GridDhtTxFinishFuture.java  |  10 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |  14 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  13 +-
 .../dht/GridPartitionedGetFuture.java           |  12 +-
 .../dht/atomic/GridDhtAtomicCache.java          |  13 +-
 .../dht/atomic/GridDhtAtomicUpdateFuture.java   |  17 +-
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |  38 +-
 .../dht/colocated/GridDhtColocatedCache.java    |  22 +-
 .../colocated/GridDhtColocatedLockFuture.java   |   8 +-
 .../dht/preloader/GridDhtForceKeysFuture.java   |  20 +-
 .../preloader/GridDhtPartitionDemandPool.java   |   2 +-
 .../GridDhtPartitionsExchangeFuture.java        |  24 +-
 .../dht/preloader/GridDhtPreloader.java         |   9 +-
 .../distributed/near/GridNearAtomicCache.java   |   2 +-
 .../distributed/near/GridNearCacheAdapter.java  |   2 +-
 .../distributed/near/GridNearGetFuture.java     |  21 +-
 .../distributed/near/GridNearLockFuture.java    |   8 +-
 .../near/GridNearTransactionalCache.java        |   2 +-
 .../near/GridNearTxFinishFuture.java            |   4 +-
 .../cache/distributed/near/GridNearTxLocal.java |  16 +-
 .../near/GridNearTxPrepareFuture.java           |  12 +-
 .../processors/cache/local/GridLocalCache.java  |   2 +-
 .../cache/local/GridLocalLockFuture.java        |   4 +-
 .../processors/cache/local/GridLocalTx.java     |  10 +-
 .../cache/local/GridLocalTxFuture.java          |   4 +-
 .../local/atomic/GridLocalAtomicCache.java      |   6 +-
 .../GridCacheDistributedFieldsQueryFuture.java  |   2 +-
 .../query/GridCacheFieldsQueryErrorFuture.java  |   2 +-
 .../query/GridCacheLocalFieldsQueryFuture.java  |   2 +-
 .../cache/query/GridCacheLocalQueryFuture.java  |   4 +-
 .../cache/query/GridCacheQueryErrorFuture.java  |   2 +-
 .../query/GridCacheQueryFutureAdapter.java      |   4 +-
 .../cache/query/GridCacheQueryManager.java      |   4 +-
 .../cache/transactions/IgniteTxAdapter.java     |   2 +-
 .../cache/transactions/IgniteTxHandler.java     |  13 +-
 .../transactions/IgniteTxLocalAdapter.java      |  91 ++--
 .../transactions/TransactionProxyImpl.java      |   2 +-
 .../closure/GridClosureProcessor.java           |  28 +-
 .../continuous/GridContinuousProcessor.java     |  24 +-
 .../dataload/GridDataLoaderFuture.java          |   4 +-
 .../dataload/IgniteDataLoaderImpl.java          |  10 +-
 .../GridCacheAtomicSequenceImpl.java            |   4 +-
 .../hadoop/IgniteHadoopNoopProcessor.java       |   2 +-
 .../processors/igfs/IgfsDataManager.java        |  14 +-
 .../internal/processors/igfs/IgfsImpl.java      |  10 +-
 .../processors/igfs/IgfsIpcHandler.java         |   4 +-
 .../processors/query/GridQueryProcessor.java    |   4 +-
 .../processors/rest/GridRestProcessor.java      |  10 +-
 .../handlers/cache/GridCacheCommandHandler.java |   6 +-
 .../cache/GridCacheQueryCommandHandler.java     |   4 +-
 .../DataStructuresCommandHandler.java           |   4 +-
 .../handlers/task/GridTaskCommandHandler.java   |   4 +-
 .../top/GridTopologyCommandHandler.java         |   4 +-
 .../version/GridVersionCommandHandler.java      |   2 +-
 .../tcp/GridTcpMemcachedNioListener.java        |   4 +-
 .../service/GridServiceDeploymentFuture.java    |   2 +-
 .../service/GridServiceProcessor.java           |   8 +-
 .../GridStreamerStageExecutionFuture.java       |   4 +-
 .../util/future/GridCompoundFuture.java         |  34 +-
 .../util/future/GridEmbeddedFuture.java         |  48 +-
 .../util/future/GridFinishedFuture.java         | 118 +----
 .../util/future/GridFinishedFutureEx.java       | 192 -------
 .../internal/util/future/GridFutureAdapter.java | 219 +-------
 .../util/future/GridFutureAdapterEx.java        | 500 -------------------
 .../util/future/GridFutureChainListener.java    |  18 +-
 .../util/future/IgniteFinishedFutureImpl.java   |  27 +-
 .../util/future/IgniteFinishedFutureImplEx.java |  30 --
 .../internal/util/future/IgniteFutureImpl.java  |  20 -
 .../ignite/internal/util/lang/GridFunc.java     |   6 +-
 .../internal/util/worker/GridWorkerFuture.java  |   2 +-
 .../org/apache/ignite/lang/IgniteFuture.java    |  58 ---
 .../communication/tcp/TcpCommunicationSpi.java  |  16 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |   2 +-
 .../distributed/GridCacheEventAbstractTest.java |   2 +-
 .../cache/GridCacheCommandHandlerSelfTest.java  |  42 +-
 .../util/future/GridCompoundFutureSelfTest.java |  14 +-
 .../util/future/GridEmbeddedFutureSelfTest.java |  13 +-
 .../util/future/GridFinishedFutureSelfTest.java | 103 ----
 .../util/future/GridFutureAdapterSelfTest.java  |  10 +-
 .../util/future/IgniteFutureImplTest.java       |  41 +-
 .../testsuites/IgniteLangSelfTestSuite.java     |   1 -
 .../hadoop/jobtracker/GridHadoopJobTracker.java |  12 +-
 .../hadoop/shuffle/GridHadoopShuffle.java       |   4 +-
 .../hadoop/shuffle/GridHadoopShuffleJob.java    |  14 +-
 .../GridHadoopExternalTaskExecutor.java         |   2 +-
 .../child/GridHadoopChildProcessRunner.java     |   2 +-
 .../processors/query/h2/IgniteH2Indexing.java   |   2 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |   8 +-
 .../processors/schedule/ScheduleFutureImpl.java |   3 +-
 120 files changed, 548 insertions(+), 1957 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 547cbc6..d454e76 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -150,26 +150,6 @@ public final class IgniteSystemProperties {
     public static final String IGNITE_LOCAL_HOST = "IGNITE_LOCAL_HOST";
 
     /**
-     * Name of the system property or environment variable to activate synchronous
-     * listener notification for future objects implemented in Ignite. I.e.
-     * closure passed into method {@link org.apache.ignite.internal.IgniteInternalFuture#listenAsync(org.apache.ignite.lang.IgniteInClosure)} will
-     * be evaluated in the same thread that will end the future.
-     *
-     * @see org.apache.ignite.internal.IgniteInternalFuture#syncNotify()
-     */
-    public static final String IGNITE_FUT_SYNC_NOTIFICATION = "IGNITE_FUTURE_SYNC_NOTIFICATION";
-
-    /**
-     * Name of the system property or environment variable to activate concurrent
-     * listener notification for future objects implemented in Ignite. I.e.
-     * upon future completion every listener will be notified concurrently in a
-     * separate thread.
-     *
-     * @see org.apache.ignite.internal.IgniteInternalFuture#concurrentNotify()
-     */
-    public static final String IGNITE_FUT_CONCURRENT_NOTIFICATION = "IGNITE_FUTURE_CONCURRENT_NOTIFICATION";
-
-    /**
      * System property to override deployment mode configuration parameter.
      * Valid values for property are: PRIVATE, ISOLATED, SHARED or CONTINUOUS.
      *

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/ComputeTaskInternalFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/ComputeTaskInternalFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/ComputeTaskInternalFuture.java
index 9c9a5e5..16ef37e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/ComputeTaskInternalFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/ComputeTaskInternalFuture.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal;
 
 import org.apache.ignite.*;
-import org.apache.ignite.cluster.*;
 import org.apache.ignite.compute.*;
 import org.apache.ignite.internal.util.future.*;
 import org.apache.ignite.internal.util.tostring.*;
@@ -27,7 +26,6 @@ import org.apache.ignite.lang.*;
 import org.apache.ignite.plugin.security.*;
 import org.jetbrains.annotations.*;
 
-import java.io.*;
 import java.util.*;
 
 /**
@@ -49,18 +47,11 @@ public class ComputeTaskInternalFuture<R> extends GridFutureAdapter<R> {
     private ComputeFuture<R> userFut;
 
     /**
-     * Required by {@link Externalizable}.
-     */
-    public ComputeTaskInternalFuture() {
-        // No-op.
-    }
-
-    /**
      * @param ses Task session instance.
      * @param ctx Kernal context.
      */
     public ComputeTaskInternalFuture(ComputeTaskSession ses, GridKernalContext ctx) {
-        super(ctx);
+        super();
 
         assert ses != null;
         assert ctx != null;
@@ -197,7 +188,7 @@ public class ComputeTaskInternalFuture<R> extends GridFutureAdapter<R> {
             }
 
             @Override public IgniteFuture<?> mapFuture() {
-                return new IgniteFinishedFutureImpl<Object>(ctx);
+                return new IgniteFinishedFutureImpl<Object>();
             }
         };
 
@@ -231,8 +222,6 @@ public class ComputeTaskInternalFuture<R> extends GridFutureAdapter<R> {
     @Override public boolean cancel() throws IgniteCheckedException {
         ctx.security().authorize(ses.getTaskName(), GridSecurityPermission.TASK_CANCEL, null);
 
-        checkValid();
-
         if (onCancelled()) {
             ctx.task().onCancelled(ses.getId());
 
@@ -242,32 +231,6 @@ public class ComputeTaskInternalFuture<R> extends GridFutureAdapter<R> {
         return isCancelled();
     }
 
-    /**
-     * Cancel task on master leave event. Does not send cancel request to remote jobs and invokes master-leave
-     * callback on local jobs.
-     *
-     * @return {@code True} if future was cancelled (i.e. was not finished prior to this call).
-     * @throws IgniteCheckedException If failed.
-     */
-    public boolean cancelOnMasterLeave() throws IgniteCheckedException {
-        checkValid();
-
-        if (onCancelled()) {
-            // Invoke master-leave callback on spawned jobs on local node and then cancel them.
-            for (ClusterNode node : ctx.discovery().nodes(ses.getTopology())) {
-                if (ctx.localNodeId().equals(node.id())) {
-                    ctx.job().masterLeaveLocal(ses.getId());
-
-                    ctx.job().cancelJob(ses.getId(), null, false);
-                }
-            }
-
-            return true;
-        }
-
-        return isCancelled();
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(ComputeTaskInternalFuture.class, this, "super", super.toString());

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/GridJobSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSessionImpl.java
index aa9b1b5..7d32586 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridJobSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridJobSessionImpl.java
@@ -292,7 +292,7 @@ public class GridJobSessionImpl implements GridTaskSessionInternal {
 
     /** {@inheritDoc} */
     @Override public IgniteFuture<?> mapFuture() {
-        return new IgniteFinishedFutureImpl<>(ctx, null);
+        return new IgniteFinishedFutureImpl<>(null);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
index 2957801..25ebb37 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridTaskSessionImpl.java
@@ -156,7 +156,7 @@ public class GridTaskSessionImpl implements GridTaskSessionInternal {
         this.fullSup = fullSup;
         this.subjId = subjId;
 
-        mapFut = new IgniteFutureImpl(new GridFutureAdapter(ctx));
+        mapFut = new IgniteFutureImpl(new GridFutureAdapter());
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
index ed4a820..969d905 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteInternalFuture.java
@@ -107,64 +107,6 @@ public interface IgniteInternalFuture<R> {
     public long duration();
 
     /**
-     * Flag to turn on or off synchronous listener notification. If this flag is {@code true}, then
-     * upon future completion the notification may happen in the same thread that created
-     * the future. This becomes especially important when adding listener to a future that
-     * is already {@code done} - if this flag is {@code true}, then listener will be
-     * immediately notified within the same thread.
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_SYNC_NOTIFICATION} system property to {@code true}.
-     *
-     * @param syncNotify Flag to turn on or off synchronous listener notification.
-     */
-    public void syncNotify(boolean syncNotify);
-
-    /**
-     * Gets value of synchronous listener notification flag. If this flag is {@code true}, then
-     * upon future completion the notification may happen in the same thread that created
-     * the future. This becomes especially important when adding listener to a future that
-     * is already {@code done} - if this flag is {@code true}, then listener will be
-     * immediately notified within the same thread.
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_SYNC_NOTIFICATION} system property to {@code true}.
-     *
-     * @return Synchronous listener notification flag.
-     */
-    public boolean syncNotify();
-
-    /**
-     * Flag to turn on or off concurrent listener notification. This flag comes into play only
-     * when a future has more than one listener subscribed to it. If this flag is {@code true},
-     * then all listeners will be notified concurrently by different threads; otherwise,
-     * listeners will be notified one after another within one thread (depending on
-     * {@link #syncNotify()} flag, these notifications may happen either in the same thread which
-     * started the future, or in a different thread).
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_CONCURRENT_NOTIFICATION} system property to {@code true}.
-     *
-     * @param concurNotify Flag to turn on or off concurrent listener notification.
-     */
-    public void concurrentNotify(boolean concurNotify);
-
-    /**
-     * Gets value concurrent listener notification flag. This flag comes into play only
-     * when a future has more than one listener subscribed to it. If this flag is {@code true},
-     * then all listeners will be notified concurrently by different threads; otherwise,
-     * listeners will be notified one after another within one thread (depending on
-     * {@link #syncNotify()} flag, these notifications may happen either in the same thread which
-     * started the future, or in a different thread).
-     * <p>
-     * Default value is {@code false}. To change the default, set
-     * {@link IgniteSystemProperties#IGNITE_FUT_CONCURRENT_NOTIFICATION} system property to {@code true}.
-     *
-     * @return Concurrent listener notification flag
-     */
-    public boolean concurrentNotify();
-
-    /**
      * Registers listener closure to be asynchronously notified whenever future completes.
      *
      * @param lsnr Listener closure to register. If not provided - this method is no-op.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterImpl.java
index c79fed8..e42e186 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterImpl.java
@@ -319,7 +319,7 @@ public class IgniteClusterImpl extends ClusterGroupAdapter implements IgniteClus
             return startNodesAsync(t.get1(), t.get2(), restart, timeout, maxConn);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -411,7 +411,7 @@ public class IgniteClusterImpl extends ClusterGroupAdapter implements IgniteClus
             // If there is nothing to start, return finished future with empty result.
             if (nodeCallCnt == 0)
                 return new GridFinishedFuture<Collection<GridTuple3<String, Boolean, String>>>(
-                    ctx, Collections.<GridTuple3<String, Boolean, String>>emptyList());
+                    Collections.<GridTuple3<String, Boolean, String>>emptyList());
 
             // Exceeding max line width for readability.
             GridCompoundFuture<GridTuple3<String, Boolean, String>, Collection<GridTuple3<String, Boolean, String>>>
@@ -433,7 +433,7 @@ public class IgniteClusterImpl extends ClusterGroupAdapter implements IgniteClus
             return fut;
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
         finally {
             unguard();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 68f0a4a..5a1d822 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -149,7 +149,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     private long segChkFreq;
 
     /** Local node join to topology event. */
-    private GridFutureAdapterEx<DiscoveryEvent> locJoinEvt = new GridFutureAdapterEx<>();
+    private GridFutureAdapter<DiscoveryEvent> locJoinEvt = new GridFutureAdapter<>();
 
     /** GC CPU load. */
     private volatile double gcCpuLoad;
@@ -923,7 +923,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         long topVer = topologyVersion();
 
         if (topVer >= awaitVer)
-            return new GridFinishedFuture<>(ctx, topVer);
+            return new GridFinishedFuture<>(topVer);
 
         DiscoTopologyFuture fut = new DiscoTopologyFuture(ctx, awaitVer);
 
@@ -1653,6 +1653,9 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         /** */
         private static final long serialVersionUID = 0L;
 
+        /** */
+        private GridKernalContext ctx;
+
         /** Topology await version. */
         private long awaitVer;
 
@@ -1666,8 +1669,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
          * @param awaitVer Await version.
          */
         private DiscoTopologyFuture(GridKernalContext ctx, long awaitVer) {
-            super(ctx);
-
+            this.ctx = ctx;
             this.awaitVer = awaitVer;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/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 82af8bf..39f266c 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
@@ -663,7 +663,7 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
      */
     public <T extends Event> IgniteInternalFuture<T> waitForEvent(@Nullable final IgnitePredicate<T> p,
         @Nullable int... types) {
-        final GridFutureAdapter<T> fut = new GridFutureAdapter<>(ctx);
+        final GridFutureAdapter<T> fut = new GridFutureAdapter<>();
 
         addLocalEventListener(new GridLocalEventListener() {
             @Override public void onEvent(Event evt) {
@@ -691,7 +691,7 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
         @Nullable final IgnitePredicate<? super Event> p, int... types) throws IgniteCheckedException {
         assert timeout >= 0;
 
-        final GridFutureAdapter<Event> fut = new GridFutureAdapter<>(ctx);
+        final GridFutureAdapter<Event> fut = new GridFutureAdapter<>();
 
         addLocalEventListener(new GridLocalEventListener() {
             @Override public void onEvent(Event evt) {
@@ -765,7 +765,7 @@ public class GridEventStorageManager extends GridManagerAdapter<EventStorageSpi>
         assert p != null;
         assert nodes != null;
 
-        final GridFutureAdapter<List<T>> fut = new GridFutureAdapter<>(ctx);
+        final GridFutureAdapter<List<T>> fut = new GridFutureAdapter<>();
 
         ctx.closure().runLocalSafe(new GPR() {
             @Override public void run() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
index 69795b1..ce7df9a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
@@ -446,7 +446,7 @@ public class GridAffinityAssignmentCache {
          * @param ctx Kernal context.
          */
         private AffinityReadyFuture(GridKernalContext ctx, long reqTopVer) {
-            super(ctx);
+            super();
 
             this.reqTopVer = reqTopVer;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index d7d0391..50221c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -306,7 +306,7 @@ public class GridAffinityProcessor extends GridProcessorAdapter {
                 new GridAffinityAssignment(topVer, cctx.affinity().assignments(topVer)),
                 cctx.portableEnabled());
 
-            IgniteInternalFuture<AffinityInfo> old = affMap.putIfAbsent(key, new GridFinishedFuture<>(ctx, info));
+            IgniteInternalFuture<AffinityInfo> old = affMap.putIfAbsent(key, new GridFinishedFuture<>(info));
 
             if (old != null)
                 info = old.get();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 12ea535..95cc4a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -1592,7 +1592,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             });
         }
         else
-            return new GridFinishedFuture<>(ctx.kernalContext());
+            return new GridFinishedFuture<>();
     }
 
     /** {@inheritDoc} */
@@ -1908,7 +1908,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             });
         }
 
-        return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+        return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
     }
 
     /**
@@ -2107,7 +2107,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
         assert ctx.portableEnabled() || cached == null || F.first(keys).equals(cached.key());
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K, V>emptyMap());
+            return new GridFinishedFuture<>(Collections.<K, V>emptyMap());
 
         if (keyCheck)
             validateCacheKeys(keys);
@@ -2119,7 +2119,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                 checkJta();
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                return new GridFinishedFuture<>(e);
             }
 
             tx = ctx.tm().threadLocalTx();
@@ -2189,7 +2189,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
 
                                 if (keys.size() == 1)
                                     // Safe to return because no locks are required in READ_COMMITTED mode.
-                                    return new GridFinishedFuture<>(ctx.kernalContext(), map);
+                                    return new GridFinishedFuture<>(map);
                             }
 
                             break;
@@ -2218,7 +2218,6 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                     final Collection<K> loaded = new HashSet<>();
 
                     return new GridEmbeddedFuture<>(
-                        ctx.kernalContext(),
                         ctx.closures().callLocalSafe(ctx.projectSafe(new GPC<Map<K, V>>() {
                             @Override public Map<K, V> call() throws Exception {
                                 ctx.store().loadAllFromStore(null/*tx*/, loadKeys.keySet(), new CI2<K, V>() {
@@ -2297,7 +2296,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         new C2<Map<K, V>, Exception, IgniteInternalFuture<Map<K, V>>>() {
                             @Override public IgniteInternalFuture<Map<K, V>> apply(Map<K, V> map, Exception e) {
                                 if (e != null)
-                                    return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                                    return new GridFinishedFuture<>(e);
 
                                 if (tx0 == null || (!tx0.implicit() && tx0.isolation() == READ_COMMITTED)) {
                                     Collection<K> notFound = new HashSet<>(loadKeys.keySet());
@@ -2314,7 +2313,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                                 }
 
                                 // There were no misses.
-                                return new GridFinishedFuture<>(ctx.kernalContext(), Collections.<K,
+                                return new GridFinishedFuture<>(Collections.<K,
                                     V>emptyMap());
                             }
                         },
@@ -2340,10 +2339,10 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                     }
                 }
 
-                return new GridFinishedFuture<>(ctx.kernalContext(), map);
+                return new GridFinishedFuture<>(map);
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                return new GridFinishedFuture<>(e);
             }
         }
         else {
@@ -2518,7 +2517,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
     @Override public IgniteInternalFuture<?> putAllConflictAsync(final Map<? extends K, GridCacheDrInfo<V>> drMap)
         throws IgniteCheckedException {
         if (F.isEmpty(drMap))
-            return new GridFinishedFuture<Object>(ctx.kernalContext());
+            return new GridFinishedFuture<Object>();
 
         ctx.dr().onReceiveCacheEntriesReceived(drMap.size());
 
@@ -3064,7 +3063,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         ctx.deploy().registerClass(oldVal);
                     }
                     catch (IgniteCheckedException e) {
-                        return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                        return new GridFinishedFuture<>(e);
                     }
                 }
 
@@ -3123,7 +3122,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
     @Override public IgniteInternalFuture<?> putAllAsync(final Map<? extends K, ? extends V> m,
         @Nullable final IgnitePredicate<Cache.Entry<K, V>>... filter) {
         if (F.isEmpty(m))
-            return new GridFinishedFuture<Object>(ctx.kernalContext());
+            return new GridFinishedFuture<Object>();
 
         if (keyCheck)
             validateCacheKeys(m.keySet());
@@ -3280,7 +3279,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
         final long start = statsEnabled ? System.nanoTime() : 0L;
 
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<Object>(ctx.kernalContext());
+            return new GridFinishedFuture<Object>();
 
         if (keyCheck)
             validateCacheKeys(keys);
@@ -3438,7 +3437,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
         ctx.denyOnLocalRead();
 
         if (F.isEmpty(drMap))
-            return new GridFinishedFuture<Object>(ctx.kernalContext());
+            return new GridFinishedFuture<Object>();
 
         ctx.dr().onReceiveCacheEntriesReceived(drMap.size());
 
@@ -3494,7 +3493,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         ctx.deploy().registerClass(val);
                 }
                 catch (IgniteCheckedException e) {
-                    return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
 
                 return tx.removeAllAsync(ctx, Collections.singletonList(key), null, true,
@@ -3524,7 +3523,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         ctx.deploy().registerClass(oldVal);
                 }
                 catch (IgniteCheckedException e) {
-                    return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                    return new GridFinishedFuture<>(e);
                 }
 
                 return tx.putAllAsync(ctx, F.t(key, newVal), true, null, -1, ctx.equalsPeekArray(oldVal));
@@ -3603,7 +3602,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         ctx.deploy().registerClass(val);
                     }
                     catch (IgniteCheckedException e) {
-                        return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                        return new GridFinishedFuture<>(e);
                     }
                 }
 
@@ -3616,7 +3615,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         val0 = (V)ctx.marshalToPortable(val);
                     }
                     catch (IgniteException e) {
-                        return new GridFinishedFuture<>(ctx.kernalContext(), e);
+                        return new GridFinishedFuture<>(e);
                     }
                 }
 
@@ -3985,7 +3984,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             A.notNull(key, "key");
 
         if (!ctx.store().configured())
-            return new GridFinishedFuture<>(ctx.kernalContext());
+            return new GridFinishedFuture<>();
 
         GridCacheProjectionImpl<K, V> prj = ctx.projectionPerCall();
 
@@ -4008,7 +4007,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                 Collection<ClusterNode> nodes = ctx.grid().cluster().forDataNodes(name()).nodes();
 
                 if (nodes.isEmpty())
-                    return new GridFinishedFuture<>(ctx.kernalContext());
+                    return new GridFinishedFuture<>();
 
                 return ctx.closures().callAsyncNoFailover(BROADCAST,
                     new LoadKeysCallable<>(ctx.name(), keys0, true, plc),
@@ -4029,7 +4028,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             Collection<ClusterNode> nodes = ctx.grid().cluster().forDataNodes(name()).nodes();
 
             if (nodes.isEmpty())
-                return new GridFinishedFuture<>(ctx.kernalContext());
+                return new GridFinishedFuture<>();
 
             return ctx.closures().callAsyncNoFailover(BROADCAST,
                 new LoadKeysCallable<>(ctx.name(), keys, false, plc),
@@ -4176,7 +4175,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
         Collection<ClusterNode> nodes = grp.nodes();
 
         if (nodes.isEmpty())
-            return new GridFinishedFuture<>(ctx.kernalContext(), 0);
+            return new GridFinishedFuture<>(0);
 
         IgniteInternalFuture<Collection<Integer>> fut =
             ctx.closures().broadcastNoFailover(new SizeCallable(ctx.name(), peekModes), null, nodes);
@@ -4450,7 +4449,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                         @Override public IgniteInternalFuture<IgniteInternalTx> apply(Object o, Exception e) {
                             return tx.commitAsync();
                         }
-                    }, ctx.kernalContext());
+                    });
 
                 saveFuture(holder, f);
 
@@ -4617,7 +4616,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             checkJta();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         if (log.isDebugEnabled())
@@ -4685,7 +4684,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
                                 }
                             });
                         }
-                    }, ctx.kernalContext());
+                    });
 
                 saveFuture(holder, f);
 
@@ -4771,7 +4770,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
         catch (InterruptedException e) {
             Thread.currentThread().interrupt();
 
-            return new GridFinishedFutureEx<>(new IgniteInterruptedCheckedException("Failed to wait for asynchronous " +
+            return new GridFinishedFuture<>(new IgniteInterruptedCheckedException("Failed to wait for asynchronous " +
                 "operation permit (thread got interrupted).", e));
         }
     }
@@ -5114,7 +5113,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>,
             checkJta();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         return getAllAsync(Collections.singletonList(key), deserializePortable).chain(

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
index d3510e4..3f7872f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAffinityManager.java
@@ -108,7 +108,7 @@ public class GridCacheAffinityManager<K, V> extends GridCacheManagerAdapter<K, V
 
         IgniteInternalFuture<Long> fut = aff.readyFuture(topVer);
 
-        return fut != null ? fut : new GridFinishedFutureEx<>(topVer);
+        return fut != null ? fut : new GridFinishedFuture<>(topVer);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
index 382eb61..8a642f3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEvictionManager.java
@@ -1568,7 +1568,7 @@ public class GridCacheEvictionManager<K, V> extends GridCacheManagerAdapter<K, V
          * @param ctx Context.
          */
         EvictionFuture(GridKernalContext ctx) {
-            super(ctx);
+            super();
         }
 
         /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMultiTxFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMultiTxFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMultiTxFuture.java
index 287a0db..c6829aa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMultiTxFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMultiTxFuture.java
@@ -52,12 +52,9 @@ public final class GridCacheMultiTxFuture<K, V> extends GridFutureAdapter<Boolea
      * @param cctx Cache context.
      */
     public GridCacheMultiTxFuture(GridCacheContext<K, V> cctx) {
-        super(cctx.kernalContext());
+        super();
 
-        log = U.logger(ctx,  logRef, GridCacheMultiTxFuture.class);
-
-        // Notify listeners in different threads.
-        concurrentNotify(true);
+        log = U.logger(cctx.kernalContext(),  logRef, GridCacheMultiTxFuture.class);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
index d125c02..5190c7e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
@@ -994,7 +994,7 @@ public class GridCacheMvccManager<K, V> extends GridCacheSharedManagerAdapter<K,
         assert topVer != 0;
 
         if (topVer < 0)
-            return new GridFinishedFuture(context().kernalContext());
+            return new GridFinishedFuture();
 
         final FinishLockFuture finishFut = new FinishLockFuture(
             keyFilter == null ?
@@ -1066,7 +1066,7 @@ public class GridCacheMvccManager<K, V> extends GridCacheSharedManagerAdapter<K,
          * @param entries Entries.
          */
         FinishLockFuture(Iterable<GridDistributedCacheEntry<K, V>> entries, long topVer) {
-            super(cctx.kernalContext(), true);
+            super();
 
             assert topVer > 0;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index d7b1914..2b672d9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -160,7 +160,7 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
     @Override protected void start0() throws IgniteCheckedException {
         super.start0();
 
-        locExchFut = new GridFutureAdapter<>(cctx.kernalContext());
+        locExchFut = new GridFutureAdapter<>();
 
         exchWorker = new ExchangeWorker();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java
index 40e090b..c863e75 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePreloaderAdapter.java
@@ -57,7 +57,7 @@ public class GridCachePreloaderAdapter<K, V> implements GridCachePreloader<K, V>
         log = cctx.logger(getClass());
         aff = cctx.config().getAffinity();
 
-        finFut = new GridFinishedFuture(cctx.kernalContext());
+        finFut = new GridFinishedFuture();
     }
 
     /** {@inheritDoc} */
@@ -112,7 +112,7 @@ public class GridCachePreloaderAdapter<K, V> implements GridCachePreloader<K, V>
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Object> request(Collection<? extends K> keys, long topVer) {
-        return new GridFinishedFuture<>(cctx.kernalContext());
+        return new GridFinishedFuture<>();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java
index c8187f4..20e3c3b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java
@@ -776,7 +776,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
 
         // Check k-v predicate first.
         if (!isAll(key, val, true))
-            return new GridFinishedFuture<>(cctx.kernalContext());
+            return new GridFinishedFuture<>();
 
         return cache.putAsync(key, val, entry, ttl, and(filter, false));
     }
@@ -858,7 +858,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
 
         // Check k-v predicate first.
         if (!isAll(key, val, true))
-            return new GridFinishedFuture<>(cctx.kernalContext(), false);
+            return new GridFinishedFuture<>(false);
 
         return cache.putxAsync(key, val, entry, ttl, and(filter, false));
     }
@@ -927,7 +927,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
         m = isAll(m, true);
 
         if (F.isEmpty(m))
-            return new GridFinishedFuture<>(cctx.kernalContext());
+            return new GridFinishedFuture<>();
 
         return cache.putAllAsync(m, and(filter, false));
     }
@@ -1169,7 +1169,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
 
         // Check k-v predicate first.
         if (!isAll(key, newVal, true))
-            return new GridFinishedFuture<>(cctx.kernalContext(), new GridCacheReturn<V>(false));
+            return new GridFinishedFuture<>(new GridCacheReturn<V>(false));
 
         return cache.replacexAsync(key, oldVal, newVal);
     }
@@ -1186,7 +1186,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<GridCacheReturn<V>> removexAsync(K key, V val) {
-        return !isAll(key, val, true) ? new GridFinishedFuture<>(cctx.kernalContext(),
+        return !isAll(key, val, true) ? new GridFinishedFuture<>(
             new GridCacheReturn<V>(false)) : cache.removexAsync(key, val);
     }
 
@@ -1197,7 +1197,7 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<Boolean> removeAsync(K key, V val) {
-        return !isAll(key, val, true) ? new GridFinishedFuture<>(cctx.kernalContext(), false) :
+        return !isAll(key, val, true) ? new GridFinishedFuture<>(false) :
             cache.removeAsync(key, val);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheOptimisticCheckPreparedTxFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheOptimisticCheckPreparedTxFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheOptimisticCheckPreparedTxFuture.java
index 75b2683..759474c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheOptimisticCheckPreparedTxFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheOptimisticCheckPreparedTxFuture.java
@@ -86,7 +86,7 @@ public class GridCacheOptimisticCheckPreparedTxFuture<K, V> extends GridCompound
         this.txNodes = txNodes;
         this.failedNodeId = failedNodeId;
 
-        log = U.logger(ctx, logRef, GridCacheOptimisticCheckPreparedTxFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridCacheOptimisticCheckPreparedTxFuture.class);
 
         nodes = new GridLeanMap<>();
 
@@ -338,7 +338,7 @@ public class GridCacheOptimisticCheckPreparedTxFuture<K, V> extends GridCompound
          * @param nodeId Node ID.
          */
         private MiniFuture(UUID nodeId) {
-            super(cctx.kernalContext());
+            super();
 
             this.nodeId = nodeId;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxFinishSync.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxFinishSync.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxFinishSync.java
index 93247c6..f7f91b1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxFinishSync.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxFinishSync.java
@@ -239,7 +239,7 @@ public class GridCacheTxFinishSync<K, V> {
                     return null;
 
                 if (nodeLeft)
-                    return new GridFinishedFutureEx<>(new IgniteCheckedException("Failed to wait for finish synchronizer " +
+                    return new GridFinishedFuture<>(new IgniteCheckedException("Failed to wait for finish synchronizer " +
                         "state (node left grid): " + nodeId));
 
                 if (pendingFut == null) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
index 00190d9..10396d0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
@@ -160,7 +160,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> removeAllAsync() {
-        GridFutureAdapter<Void> opFut = new GridFutureAdapter<>(ctx.kernalContext());
+        GridFutureAdapter<Void> opFut = new GridFutureAdapter<>();
 
         long topVer = ctx.affinity().affinityTopologyVersion();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index dbf82dd..52c50df 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -723,10 +723,10 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V>
         try {
             commit();
 
-            return new GridFinishedFutureEx<IgniteInternalTx>(this);
+            return new GridFinishedFuture<IgniteInternalTx>(this);
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFutureEx<>(e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -753,7 +753,7 @@ public class GridDistributedTxRemoteAdapter<K, V> extends IgniteTxAdapter<K, V>
     @Override public IgniteInternalFuture<IgniteInternalTx> rollbackAsync() {
         rollback();
 
-        return new GridFinishedFutureEx<IgniteInternalTx>(this);
+        return new GridFinishedFuture<IgniteInternalTx>(this);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java
index 101d657..bd4b264 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtAssignmentFetchFuture.java
@@ -28,6 +28,7 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 import org.jetbrains.annotations.*;
 
 import java.util.*;
+import java.util.concurrent.atomic.*;
 
 import static org.apache.ignite.internal.managers.communication.GridIoPolicy.*;
 
@@ -41,9 +42,15 @@ public class GridDhtAssignmentFetchFuture<K, V> extends GridFutureAdapter<List<L
     /** Nodes order comparator. */
     private static final Comparator<ClusterNode> CMP = new GridNodeOrderComparator();
 
+    /** Logger reference. */
+    private static final AtomicReference<IgniteLogger> logRef = new AtomicReference<>();
+
     /** Cache context. */
     private final GridCacheContext<K, V> ctx;
 
+    /** Logger. */
+    private IgniteLogger log;
+
     /** List of available nodes this future can fetch data from. */
     private Queue<ClusterNode> availableNodes;
 
@@ -57,11 +64,14 @@ public class GridDhtAssignmentFetchFuture<K, V> extends GridFutureAdapter<List<L
      * @param ctx Cache context.
      * @param availableNodes Available nodes.
      */
-    public GridDhtAssignmentFetchFuture(GridCacheContext<K, V> ctx, long topVer, Collection<ClusterNode> availableNodes) {
-        super(ctx.kernalContext());
+    public GridDhtAssignmentFetchFuture(
+        GridCacheContext<K, V> ctx,
+        long topVer,
+        Collection<ClusterNode> availableNodes
+    ) {
+        super();
 
         this.ctx = ctx;
-
         this.topVer = topVer;
 
         LinkedList<ClusterNode> tmp = new LinkedList<>();
@@ -69,6 +79,8 @@ public class GridDhtAssignmentFetchFuture<K, V> extends GridFutureAdapter<List<L
         Collections.sort(tmp, CMP);
 
         this.availableNodes = tmp;
+
+        log = U.logger(ctx.kernalContext(), logRef, GridDhtAssignmentFetchFuture.class);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
index 2ef157c..365b884 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java
@@ -1095,7 +1095,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap
          * @param topVer Topology version.
          */
         private MultiUpdateFuture(GridKernalContext ctx, long topVer) {
-            super(ctx);
+            super();
 
             this.topVer = topVer;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
index c331b99..608678b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
@@ -449,10 +449,14 @@ public class GridDhtCacheEntry<K, V> extends GridDistributedCacheEntry<K, V> {
 
                 txFut.listenAsync(new CI1<IgniteInternalFuture<?>>() {
                     @Override public void apply(IgniteInternalFuture<?> f) {
-                        synchronized (this) {
-                            // Release memory.
-                            reader0.resetTxFuture();
-                        }
+                        cctx.kernalContext().closure().runLocalSafe(new Runnable() {
+                            @Override public void run() {
+                                synchronized (this) {
+                                    // Release memory.
+                                    reader0.resetTxFuture();
+                                }
+                            }
+                        });
                     }
                 });
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtEmbeddedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtEmbeddedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtEmbeddedFuture.java
index 81095e2..6749491 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtEmbeddedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtEmbeddedFuture.java
@@ -45,12 +45,12 @@ public class GridDhtEmbeddedFuture<A, B> extends GridEmbeddedFuture<A, B> implem
     }
 
     /**
-     * @param ctx Context.
      * @param embedded Embedded.
      * @param c Closure.
+     * @param fake Fake.
      */
-    public GridDhtEmbeddedFuture(GridKernalContext ctx, IgniteInternalFuture<B> embedded, IgniteBiClosure<B, Exception, A> c) {
-        super(ctx, embedded, c);
+    public GridDhtEmbeddedFuture(IgniteInternalFuture<B> embedded, IgniteBiClosure<B, Exception, A> c, boolean fake) {
+        super(embedded, c, fake);
 
         invalidParts = Collections.emptyList();
     }
@@ -58,28 +58,14 @@ public class GridDhtEmbeddedFuture<A, B> extends GridEmbeddedFuture<A, B> implem
     /**
      * @param embedded Future to embed.
      * @param c Embedding closure.
-     * @param ctx Kernal context.
      */
     public GridDhtEmbeddedFuture(IgniteInternalFuture<B> embedded,
-        IgniteBiClosure<B, Exception, IgniteInternalFuture<A>> c, GridKernalContext ctx) {
-        super(embedded, c, ctx);
+        IgniteBiClosure<B, Exception, IgniteInternalFuture<A>> c) {
+        super(embedded, c);
 
         invalidParts = Collections.emptyList();
     }
 
-    /**
-     * @param ctx Context.
-     * @param embedded Embedded.
-     * @param c Closure.
-     * @param invalidParts Retries.
-     */
-    public GridDhtEmbeddedFuture(GridKernalContext ctx, IgniteInternalFuture<B> embedded, IgniteBiClosure<B, Exception, A> c,
-        Collection<Integer> invalidParts) {
-        super(ctx, embedded, c);
-
-        this.invalidParts = invalidParts;
-    }
-
     /** {@inheritDoc} */
     @Override public Collection<Integer> invalidPartitions() {
         return invalidParts;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtFinishedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtFinishedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtFinishedFuture.java
index ed6c3b5..c66336d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtFinishedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtFinishedFuture.java
@@ -43,7 +43,7 @@ public class GridDhtFinishedFuture<T> extends GridFinishedFuture<T> implements G
      * @param t Result.
      */
     public GridDhtFinishedFuture(GridKernalContext ctx, T t) {
-        super(ctx, t);
+        super(t);
     }
 
     /**
@@ -51,7 +51,7 @@ public class GridDhtFinishedFuture<T> extends GridFinishedFuture<T> implements G
      * @param err Error.
      */
     public GridDhtFinishedFuture(GridKernalContext ctx, Throwable err) {
-        super(ctx, err);
+        super(err);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
index 0be5b97..c594d36 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -159,9 +159,7 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
 
         ver = tx == null ? cctx.versions().next() : tx.xidVersion();
 
-        log = U.logger(ctx, logRef, GridDhtGetFuture.class);
-
-        syncNotify(true);
+        log = U.logger(cctx.kernalContext(), logRef, GridDhtGetFuture.class);
     }
 
     /**
@@ -221,7 +219,7 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
         if (!F.isEmpty(fut.invalidPartitions()))
             retries.addAll(fut.invalidPartitions());
 
-        add(new GridEmbeddedFuture<>(cctx.kernalContext(), fut,
+        add(new GridEmbeddedFuture<>(fut,
             new IgniteBiClosure<Object, Exception, Collection<GridCacheEntryInfo<K, V>>>() {
                 @Override public Collection<GridCacheEntryInfo<K, V>> apply(Object o, Exception e) {
                     if (e != null) { // Check error first.
@@ -251,7 +249,8 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
                     // Finish this one.
                     return Collections.emptyList();
                 }
-            })
+            },
+            false)
         );
     }
 
@@ -289,15 +288,15 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
     @SuppressWarnings( {"unchecked", "IfMayBeConditional"})
     private IgniteInternalFuture<Collection<GridCacheEntryInfo<K, V>>> getAsync(final LinkedHashMap<? extends K, Boolean> keys) {
         if (F.isEmpty(keys))
-            return new GridFinishedFuture<Collection<GridCacheEntryInfo<K, V>>>(cctx.kernalContext(),
+            return new GridFinishedFuture<Collection<GridCacheEntryInfo<K, V>>>(
                 Collections.<GridCacheEntryInfo<K, V>>emptyList());
 
         final Collection<GridCacheEntryInfo<K, V>> infos = new LinkedList<>();
 
-        String taskName0 = ctx.job().currentTaskName();
+        String taskName0 = cctx.kernalContext().job().currentTaskName();
 
         if (taskName0 == null)
-            taskName0 = ctx.task().resolveTaskName(taskNameHash);
+            taskName0 = cctx.kernalContext().task().resolveTaskName(taskNameHash);
 
         final String taskName = taskName0;
 
@@ -414,11 +413,12 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
                             }
                         }
                     }
-                },
-                cctx.kernalContext());
+                }
+            );
         }
 
-        return new GridEmbeddedFuture<>(cctx.kernalContext(), fut,
+        return new GridEmbeddedFuture<>(
+            fut,
             new C2<Map<K, V>, Exception, Collection<GridCacheEntryInfo<K, V>>>() {
                 @Override public Collection<GridCacheEntryInfo<K, V>> apply(Map<K, V> map, Exception e) {
                     if (e != null) {
@@ -441,7 +441,8 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
                         return infos;
                     }
                 }
-            });
+            },
+            false);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
index 29f7363..e77916e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java
@@ -102,7 +102,7 @@ public class GridDhtLocalPartition<K, V> implements Comparable<GridDhtLocalParti
 
         log = U.logger(cctx.kernalContext(), logRef, this);
 
-        rent = new GridFutureAdapter<Object>(cctx.kernalContext()) {
+        rent = new GridFutureAdapter<Object>() {
             @Override public String toString() {
                 return "PartitionRentFuture [part=" + GridDhtLocalPartition.this + ", map=" + map + ']';
             }
@@ -437,7 +437,7 @@ public class GridDhtLocalPartition<K, V> implements Comparable<GridDhtLocalParti
 
             clearDeferredDeletes();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), true);
+            return new GridFinishedFuture<>(true);
         }
 
         return cctx.closures().callLocalSafe(new GPC<Boolean>() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index dba5ed2..ad5923c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -198,7 +198,7 @@ public final class GridDhtLockFuture<K, V> extends GridCompoundIdentityFuture<Bo
 
         entries = new ArrayList<>(cnt);
 
-        log = U.logger(ctx, logRef, GridDhtLockFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridDhtLockFuture.class);
 
         if (timeout > 0) {
             timeoutObj = new LockTimeoutObject();
@@ -797,7 +797,7 @@ public final class GridDhtLockFuture<K, V> extends GridCompoundIdentityFuture<Bo
                 int cnt = F.size(dhtMapping);
 
                 if (cnt > 0) {
-                    assert !n.id().equals(ctx.localNodeId());
+                    assert !n.id().equals(cctx.localNodeId());
 
                     MiniFuture fut = new MiniFuture(n, dhtMapping);
 
@@ -991,7 +991,7 @@ public final class GridDhtLockFuture<K, V> extends GridCompoundIdentityFuture<Bo
          * @param dhtMapping Mapping.
          */
         MiniFuture(ClusterNode node, List<GridDhtCacheEntry<K, V>> dhtMapping) {
-            super(cctx.kernalContext());
+            super();
 
             assert node != null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 753f7e9..9057319 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -684,9 +684,9 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
         }
 
         if (keyFut == null)
-            keyFut = new GridFinishedFutureEx<>();
+            keyFut = new GridFinishedFuture<>();
 
-        return new GridEmbeddedFuture<>(true, keyFut,
+        return new GridEmbeddedFuture<>(keyFut,
             new C2<Object, Exception, IgniteInternalFuture<GridNearLockResponse<K,V>>>() {
                 @Override public IgniteInternalFuture<GridNearLockResponse<K, V>> apply(Object o, Exception exx) {
                     if (exx != null)
@@ -877,11 +877,11 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                                         else {
                                             sendLockReply(nearNode, t, req, resp);
 
-                                            return new GridFinishedFutureEx<>(resp);
+                                            return new GridFinishedFuture<>(resp);
                                         }
                                     }
-                                },
-                                ctx.kernalContext());
+                                }
+                            );
                         }
                         else {
                             assert fut != null;
@@ -892,7 +892,6 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                             final GridCacheVersion mappedVer = fut.version();
 
                             return new GridDhtEmbeddedFuture<>(
-                                ctx.kernalContext(),
                                 fut,
                                 new C2<Boolean, Exception, GridNearLockResponse<K, V>>() {
                                     @Override public GridNearLockResponse<K, V> apply(Boolean b, Exception e) {
@@ -912,7 +911,7 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
 
                                         return res;
                                     }
-                                });
+                                }, false);
                         }
                     }
                     catch (IgniteCheckedException e) {
@@ -933,8 +932,8 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
                             new IgniteCheckedException(err, e));
                     }
                 }
-            },
-            ctx.kernalContext());
+            }
+        );
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index 7dac17b..41f235a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -26,11 +26,11 @@ import org.apache.ignite.internal.processors.cache.distributed.*;
 import org.apache.ignite.internal.processors.cache.transactions.*;
 import org.apache.ignite.internal.processors.cache.version.*;
 import org.apache.ignite.internal.transactions.*;
-import org.apache.ignite.lang.*;
-import org.apache.ignite.internal.util.typedef.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.internal.util.future.*;
 import org.apache.ignite.internal.util.tostring.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
@@ -103,7 +103,7 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
 
         futId = IgniteUuid.randomUuid();
 
-        log = U.logger(ctx, logRef, GridDhtTxFinishFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridDhtTxFinishFuture.class);
     }
 
     /** {@inheritDoc} */
@@ -441,7 +441,7 @@ public final class GridDhtTxFinishFuture<K, V> extends GridCompoundIdentityFutur
          * @param nearMapping nearMapping.
          */
         MiniFuture(GridDistributedTxMapping<K, V> dhtMapping, GridDistributedTxMapping<K, V> nearMapping) {
-            super(cctx.kernalContext());
+            super();
 
             assert dhtMapping == null || nearMapping == null || dhtMapping.node() == nearMapping.node();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
index 1c71f12..b98ca00 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
@@ -500,7 +500,7 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K
         catch (GridDhtInvalidPartitionException ex) {
             addInvalidPartition(cacheCtx, ex.partition());
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), true);
+            return new GridFinishedFuture<>(true);
         }
     }
 
@@ -526,13 +526,13 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K
             checkValid();
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
 
         final GridCacheReturn<V> ret = new GridCacheReturn<>(false);
 
         if (F.isEmpty(entries))
-            return new GridFinishedFuture<>(cctx.kernalContext(), ret);
+            return new GridFinishedFuture<>(ret);
 
         init();
 
@@ -606,7 +606,7 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K
         catch (IgniteCheckedException e) {
             setRollbackOnly();
 
-            return new GridFinishedFuture<>(cctx.kernalContext(), e);
+            return new GridFinishedFuture<>(e);
         }
     }
 
@@ -633,7 +633,7 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K
                 skipped + ']');
 
         if (passedKeys.isEmpty())
-            return new GridFinishedFuture<>(cctx.kernalContext(), ret);
+            return new GridFinishedFuture<>(ret);
 
         GridDhtTransactionalCacheAdapter<K, V> dhtCache = cacheCtx.isNear() ? cacheCtx.nearTx().dht() : cacheCtx.dhtTx();
 
@@ -667,8 +667,8 @@ public abstract class GridDhtTxLocalAdapter<K, V> extends IgniteTxLocalAdapter<K
 
                     return ret;
                 }
-            },
-            cctx.kernalContext());
+            }
+        );
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index e3cdc6e..58338a8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -128,13 +128,6 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu
     private IgniteInClosure<GridNearTxPrepareResponse<K, V>> completeCb;
 
     /**
-     * Empty constructor required for {@link Externalizable}.
-     */
-    public GridDhtTxPrepareFuture() {
-        // No-op.
-    }
-
-    /**
      * @param cctx Context.
      * @param tx Transaction.
      * @param nearMiniId Near mini future id.
@@ -173,7 +166,7 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu
 
         this.nearMiniId = nearMiniId;
 
-        log = U.logger(ctx, logRef, GridDhtTxPrepareFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridDhtTxPrepareFuture.class);
 
         dhtMap = tx.dhtMap();
         nearMap = tx.nearMap();
@@ -1133,7 +1126,7 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu
          * Empty constructor required for {@link Externalizable}.
          */
         public MiniFuture() {
-            super(cctx.kernalContext());
+            super();
         }
 
         /**
@@ -1142,7 +1135,7 @@ public final class GridDhtTxPrepareFuture<K, V> extends GridCompoundIdentityFutu
          * @param nearMapping nearMapping.
          */
         MiniFuture(UUID nodeId, GridDistributedTxMapping<K, V> dhtMapping, GridDistributedTxMapping<K, V> nearMapping) {
-            super(cctx.kernalContext());
+            super();
 
             assert dhtMapping == null || nearMapping == null || dhtMapping.node() == nearMapping.node();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
index 980389c..511b3c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedGetFuture.java
@@ -158,7 +158,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
 
         ver = cctx.versions().next();
 
-        log = U.logger(ctx, logRef, GridPartitionedGetFuture.class);
+        log = U.logger(cctx.kernalContext(), logRef, GridPartitionedGetFuture.class);
     }
 
     /**
@@ -306,7 +306,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
             return;
 
         if (!locVals.isEmpty())
-            add(new GridFinishedFuture<>(cctx.kernalContext(), locVals));
+            add(new GridFinishedFuture<>(locVals));
 
         if (hasRmtNodes) {
             trackable = true;
@@ -347,7 +347,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
                             remapKeys.add(key);
                     }
 
-                    long updTopVer = ctx.discovery().topologyVersion();
+                    long updTopVer = cctx.discovery().topologyVersion();
 
                     assert updTopVer > topVer : "Got invalid partitions for local node but topology version did " +
                         "not change [topVer=" + topVer + ", updTopVer=" + updTopVer +
@@ -604,7 +604,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
          * @param topVer Topology version.
          */
         MiniFuture(ClusterNode node, LinkedHashMap<K, Boolean> keys, long topVer) {
-            super(cctx.kernalContext());
+            super();
 
             this.node = node;
             this.keys = keys;
@@ -651,7 +651,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
             if (log.isDebugEnabled())
                 log.debug("Remote node left grid while sending or waiting for reply (will retry): " + this);
 
-            long updTopVer = ctx.discovery().topologyVersion();
+            long updTopVer = cctx.discovery().topologyVersion();
 
             assert updTopVer > topVer : "Got topology exception but topology version did " +
                 "not change [topVer=" + topVer + ", updTopVer=" + updTopVer +
@@ -697,7 +697,7 @@ public class GridPartitionedGetFuture<K, V> extends GridCompoundIdentityFuture<M
                     log.debug("Remapping mini get future [invalidParts=" + invalidParts + ", fut=" + this + ']');
 
                 // Need to wait for next topology version to remap.
-                IgniteInternalFuture<Long> topFut = ctx.discovery().topologyFuture(rmtTopVer);
+                IgniteInternalFuture<Long> topFut = cctx.discovery().topologyFuture(rmtTopVer);
 
                 topFut.listenAsync(new CIX1<IgniteInternalFuture<Long>>() {
                     @SuppressWarnings("unchecked")


[3/5] incubator-ignite git commit: futures: api cleanup

Posted by yz...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index eed273d..c09e51b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -420,7 +420,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             }
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
 
         // Register per-routine notifications listener if ordered messaging is used.
@@ -459,7 +459,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
             // Stop with exception if projection is empty.
             if (nodes.isEmpty() && !locIncluded) {
-                return new GridFinishedFuture<>(ctx,
+                return new GridFinishedFuture<>(
                     new ClusterTopologyCheckedException("Failed to register remote continuous listener (projection is empty)."));
             }
 
@@ -553,7 +553,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                     hnd.onListenerRegistered(routineId, ctx);
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(ctx,
+                return new GridFinishedFuture<>(
                     new IgniteCheckedException("Failed to register handler locally: " + hnd, e));
             }
         }
@@ -1617,6 +1617,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         /** */
         private static final long serialVersionUID = 0L;
 
+        /** */
+        private GridKernalContext ctx;
+
         /** Consume ID. */
         private UUID routineId;
 
@@ -1641,7 +1644,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
          * @param routineId Consume ID.
          */
         StartFuture(GridKernalContext ctx, UUID routineId) {
-            super(ctx);
+            this.ctx = ctx;
 
             this.routineId = routineId;
         }
@@ -1701,18 +1704,15 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         /** Timeout object. */
         private volatile GridTimeoutObject timeoutObj;
 
-        /**
-         * Required by {@link Externalizable}.
-         */
-        public StopFuture() {
-            // No-op.
-        }
+        /** */
+        private GridKernalContext ctx;
 
         /**
          * @param ctx Kernal context.
          */
         StopFuture(GridKernalContext ctx) {
-            super(ctx);
+            super();
+            this.ctx = ctx;
         }
 
         /**
@@ -1762,7 +1762,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
          * @param nodeId Master node ID.
          */
         SyncMessageAckFuture(GridKernalContext ctx, UUID nodeId) {
-            super(ctx);
+            super();
 
             this.nodeId = nodeId;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/GridDataLoaderFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/GridDataLoaderFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/GridDataLoaderFuture.java
index 5efcfe9..ae7052a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/GridDataLoaderFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/GridDataLoaderFuture.java
@@ -48,7 +48,7 @@ class GridDataLoaderFuture extends GridFutureAdapter<Object> {
      * @param dataLdr Data loader.
      */
     GridDataLoaderFuture(GridKernalContext ctx, IgniteDataLoaderImpl dataLdr) {
-        super(ctx);
+        super();
 
         assert dataLdr != null;
 
@@ -57,8 +57,6 @@ class GridDataLoaderFuture extends GridFutureAdapter<Object> {
 
     /** {@inheritDoc} */
     @Override public boolean cancel() throws IgniteCheckedException {
-        checkValid();
-
         if (onCancelled()) {
             dataLdr.closeEx(true);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
index ed3bbcb..1e20486 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/dataload/IgniteDataLoaderImpl.java
@@ -377,7 +377,7 @@ public class IgniteDataLoaderImpl<K, V> implements IgniteDataLoader<K, V>, Delay
         enterBusy();
 
         try {
-            GridFutureAdapter<Object> resFut = new GridFutureAdapter<>(ctx);
+            GridFutureAdapter<Object> resFut = new GridFutureAdapter<>();
 
             resFut.listenAsync(rmvActiveFut);
 
@@ -397,7 +397,7 @@ public class IgniteDataLoaderImpl<K, V> implements IgniteDataLoader<K, V>, Delay
             return new IgniteFutureImpl<>(resFut);
         }
         catch (IgniteException e) {
-            return new IgniteFinishedFutureImpl<>(ctx, e);
+            return new IgniteFinishedFutureImpl<>(e);
         }
         finally {
             leaveBusy();
@@ -849,7 +849,7 @@ public class IgniteDataLoaderImpl<K, V> implements IgniteDataLoader<K, V>, Delay
             isLocNode = node.equals(ctx.discovery().localNode());
 
             entries = newEntries();
-            curFut = new GridFutureAdapter<>(ctx);
+            curFut = new GridFutureAdapter<>();
             curFut.listenAsync(signalC);
 
             sem = new Semaphore(parallelOps);
@@ -878,7 +878,7 @@ public class IgniteDataLoaderImpl<K, V> implements IgniteDataLoader<K, V>, Delay
                     entries0 = entries;
 
                     entries = newEntries();
-                    curFut = new GridFutureAdapter<>(ctx);
+                    curFut = new GridFutureAdapter<>();
                     curFut.listenAsync(signalC);
                 }
             }
@@ -915,7 +915,7 @@ public class IgniteDataLoaderImpl<K, V> implements IgniteDataLoader<K, V>, Delay
                     curFut0 = curFut;
 
                     entries = newEntries();
-                    curFut = new GridFutureAdapter<>(ctx);
+                    curFut = new GridFutureAdapter<>();
                     curFut.listenAsync(signalC);
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
index e61deee..52f762a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheAtomicSequenceImpl.java
@@ -303,7 +303,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
 
                 locVal += l;
 
-                return new GridFinishedFuture<>(ctx.kernalContext(), updated ? locVal : curVal);
+                return new GridFinishedFuture<>(updated ? locVal : curVal);
             }
         }
         finally {
@@ -347,7 +347,7 @@ public final class GridCacheAtomicSequenceImpl implements GridCacheAtomicSequenc
 
                         locVal += l;
 
-                        return new GridFinishedFuture<>(ctx.kernalContext(), updated ? locVal : curVal);
+                        return new GridFinishedFuture<>(updated ? locVal : curVal);
                     }
                 }
                 finally {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/IgniteHadoopNoopProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/IgniteHadoopNoopProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/IgniteHadoopNoopProcessor.java
index d0ef4ce..7dc9567 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/IgniteHadoopNoopProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/IgniteHadoopNoopProcessor.java
@@ -49,7 +49,7 @@ public class IgniteHadoopNoopProcessor extends IgniteHadoopProcessorAdapter {
 
     /** {@inheritDoc} */
     @Override public IgniteInternalFuture<?> submit(GridHadoopJobId jobId, GridHadoopJobInfo jobInfo) {
-        return new GridFinishedFutureEx<>(new IgniteCheckedException("Hadoop is not available."));
+        return new GridFinishedFuture<>(new IgniteCheckedException("Hadoop is not available."));
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index e960422..c5ac658 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -406,7 +406,7 @@ public class IgfsDataManager extends IgfsManager {
                     byte[] res = fut.get();
 
                     if (res == null) {
-                        GridFutureAdapter<byte[]> rmtReadFut = new GridFutureAdapter<>(igfsCtx.kernalContext());
+                        GridFutureAdapter<byte[]> rmtReadFut = new GridFutureAdapter<>();
 
                         IgniteInternalFuture<byte[]> oldRmtReadFut = rmtReadFuts.putIfAbsent(key, rmtReadFut);
 
@@ -599,7 +599,7 @@ public class IgfsDataManager extends IgfsManager {
             if (log.isDebugEnabled())
                 log.debug("Cannot delete content of not-data file: " + fileInfo);
 
-            return new GridFinishedFuture<>(igfsCtx.kernalContext());
+            return new GridFinishedFuture<>();
         }
         else
             return delWorker.deleteAsync(fileInfo);
@@ -1256,14 +1256,14 @@ public class IgfsDataManager extends IgfsManager {
 
                 // Additional size check.
                 if (dataCachePrj.igfsDataSpaceUsed() >= dataCachePrj.igfsDataSpaceMax())
-                    return new GridFinishedFuture<Object>(igfsCtx.kernalContext(),
+                    return new GridFinishedFuture<Object>(
                         new IgfsOutOfSpaceException("Failed to write data block (IGFS maximum data size " +
                             "exceeded) [used=" + dataCachePrj.igfsDataSpaceUsed() +
                             ", allowed=" + dataCachePrj.igfsDataSpaceMax() + ']'));
 
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(igfsCtx.kernalContext(), new IgniteCheckedException("Failed to store data " +
+                return new GridFinishedFuture<>(new IgniteCheckedException("Failed to store data " +
                     "block due to unexpected exception.", e));
             }
         }
@@ -1674,7 +1674,7 @@ public class IgfsDataManager extends IgfsManager {
          * Gracefully stops worker by adding STOP_INFO to queue.
          */
         private void stop() {
-            delReqs.offer(F.t(new GridFutureAdapter<>(igfsCtx.kernalContext()), stopInfo));
+            delReqs.offer(F.t(new GridFutureAdapter<>(), stopInfo));
         }
 
         /**
@@ -1682,7 +1682,7 @@ public class IgfsDataManager extends IgfsManager {
          * @return Future which completes when entry is actually removed.
          */
         private IgniteInternalFuture<Object> deleteAsync(IgfsFileInfo info) {
-            GridFutureAdapter<Object> fut = new GridFutureAdapter<>(igfsCtx.kernalContext());
+            GridFutureAdapter<Object> fut = new GridFutureAdapter<>();
 
             delReqs.offer(F.t(fut, info));
 
@@ -1795,7 +1795,7 @@ public class IgfsDataManager extends IgfsManager {
          * @param fileId File id.
          */
         private WriteCompletionFuture(GridKernalContext ctx, IgniteUuid fileId) {
-            super(ctx);
+            super();
 
             assert fileId != null;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index eff987e..4fd5f87 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -1604,9 +1604,9 @@ public final class IgfsImpl implements IgfsEx {
             IgniteUuid id = meta.softDelete(null, null, ROOT_ID);
 
             if (id == null)
-                return new GridFinishedFuture<Object>(igfsCtx.kernalContext());
+                return new GridFinishedFuture<Object>();
             else {
-                GridFutureAdapter<Object> fut = new GridFutureAdapter<>(igfsCtx.kernalContext());
+                GridFutureAdapter<Object> fut = new GridFutureAdapter<>();
 
                 GridFutureAdapter<Object> oldFut = delFuts.putIfAbsent(id, fut);
 
@@ -1625,7 +1625,7 @@ public final class IgfsImpl implements IgfsEx {
             }
         }
         catch (IgniteCheckedException e) {
-            return new GridFinishedFuture<Object>(igfsCtx.kernalContext(), e);
+            return new GridFinishedFuture<Object>(e);
         }
     }
 
@@ -1640,7 +1640,7 @@ public final class IgfsImpl implements IgfsEx {
             GridCompoundFuture<Object, Object> resFut = new GridCompoundFuture<>(igfsCtx.kernalContext());
 
             for (IgniteUuid id : ids) {
-                GridFutureAdapter<Object> fut = new GridFutureAdapter<>(igfsCtx.kernalContext());
+                GridFutureAdapter<Object> fut = new GridFutureAdapter<>();
 
                 IgniteInternalFuture<Object> oldFut = delFuts.putIfAbsent(id, fut);
 
@@ -1662,7 +1662,7 @@ public final class IgfsImpl implements IgfsEx {
             return resFut;
         }
         else
-            return new GridFinishedFuture<>(igfsCtx.kernalContext());
+            return new GridFinishedFuture<>();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
index 1d5ba1a..8a8b858 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsIpcHandler.java
@@ -118,7 +118,7 @@ class IgfsIpcHandler implements IgfsServerHandler {
                 case LIST_PATHS: {
                     IgfsMessage res = execute(ses, cmd, msg, in);
 
-                    fut = res == null ? null : new GridFinishedFuture<>(ctx, res);
+                    fut = res == null ? null : new GridFinishedFuture<>(res);
 
                     break;
                 }
@@ -138,7 +138,7 @@ class IgfsIpcHandler implements IgfsServerHandler {
             return fut;
         }
         catch (Exception e) {
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index f503161..92b39f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -193,10 +193,10 @@ public class GridQueryProcessor extends GridProcessorAdapter {
      */
     private IgniteInternalFuture<?> rebuildIndexes(@Nullable final String space, @Nullable final TypeDescriptor desc) {
         if (idx == null)
-            return new GridFinishedFuture<>(ctx, new IgniteCheckedException("Indexing is disabled."));
+            return new GridFinishedFuture<>(new IgniteCheckedException("Indexing is disabled."));
 
         if (desc == null || !desc.registered())
-            return new GridFinishedFuture<Void>(ctx);
+            return new GridFinishedFuture<Void>();
 
         final GridWorkerFuture<?> fut = new GridWorkerFuture<Void>();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index 8c9ef1d..6c1cedb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -90,7 +90,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
      */
     private IgniteInternalFuture<GridRestResponse> handleAsync0(final GridRestRequest req) {
         if (!busyLock.tryReadLock())
-            return new GridFinishedFuture<>(ctx,
+            return new GridFinishedFuture<>(
                 new IgniteCheckedException("Failed to handle request (received request while stopping grid)."));
 
         try {
@@ -156,7 +156,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
                 startLatch.await();
             }
             catch (InterruptedException e) {
-                return new GridFinishedFuture<>(ctx, new IgniteCheckedException("Failed to handle request " +
+                return new GridFinishedFuture<>(new IgniteCheckedException("Failed to handle request " +
                     "(protocol handler was interrupted when awaiting grid start).", e));
             }
         }
@@ -185,10 +185,10 @@ public class GridRestProcessor extends GridProcessorAdapter {
                     U.warn(log, "Cannot update response session token: " + e1.getMessage());
                 }
 
-                return new GridFinishedFuture<>(ctx, res);
+                return new GridFinishedFuture<>(res);
             }
             catch (IgniteCheckedException e) {
-                return new GridFinishedFuture<>(ctx, new GridRestResponse(STATUS_AUTH_FAILED, e.getMessage()));
+                return new GridFinishedFuture<>(new GridRestResponse(STATUS_AUTH_FAILED, e.getMessage()));
             }
         }
 
@@ -199,7 +199,7 @@ public class GridRestProcessor extends GridProcessorAdapter {
         IgniteInternalFuture<GridRestResponse> res = hnd == null ? null : hnd.handleAsync(req);
 
         if (res == null)
-            return new GridFinishedFuture<>(ctx,
+            return new GridFinishedFuture<>(
                 new IgniteCheckedException("Failed to find registered handler for command: " + req.command()));
 
         final SecurityContext subjCtx0 = subjCtx;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 983dd55..c63e414 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -297,12 +297,12 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
         catch (IgniteException e) {
             U.error(log, "Failed to execute cache command: " + req, e);
 
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
         catch (IgniteCheckedException e) {
             U.error(log, "Failed to execute cache command: " + req, e);
 
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
         finally {
             if (log.isDebugEnabled())
@@ -1043,7 +1043,7 @@ public class GridCacheCommandHandler extends GridRestCommandHandlerAdapter {
 
             assert metrics != null;
 
-            return new GridFinishedFuture<Object>(ctx, new GridCacheRestMetrics(
+            return new GridFinishedFuture<Object>(new GridCacheRestMetrics(
                 (int)metrics.getCacheGets(),
                 (int)(metrics.getCacheRemovals() + metrics.getCachePuts()),
                 (int)metrics.getCacheHits(),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheQueryCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheQueryCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheQueryCommandHandler.java
index 50d82e6..5ee6418 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheQueryCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheQueryCommandHandler.java
@@ -92,7 +92,7 @@ public class GridCacheQueryCommandHandler extends GridRestCommandHandlerAdapter
             }
 
             default:
-                return new GridFinishedFutureEx<>(new IgniteCheckedException("Unsupported query command: " + req.command()));
+                return new GridFinishedFuture<>(new IgniteCheckedException("Unsupported query command: " + req.command()));
         }
     }
 
@@ -124,7 +124,7 @@ public class GridCacheQueryCommandHandler extends GridRestCommandHandlerAdapter
             return ctx.closure().callLocalSafe(c, false);
         else {
             if (ctx.discovery().node(destId) == null)
-                return new GridFinishedFutureEx<>(new IgniteCheckedException("Destination node ID has left the grid " +
+                return new GridFinishedFuture<>(new IgniteCheckedException("Destination node ID has left the grid " +
                     "(retry the query): " + destId));
 
             ctx.task().setThreadContext(TC_NO_FAILOVER, true);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/datastructures/DataStructuresCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/datastructures/DataStructuresCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/datastructures/DataStructuresCommandHandler.java
index c45f2c7..5abbb77 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/datastructures/DataStructuresCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/datastructures/DataStructuresCommandHandler.java
@@ -83,13 +83,13 @@ public class DataStructuresCommandHandler extends GridRestCommandHandlerAdapter
             IgniteCheckedException err =
                 new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("key"));
 
-            return new GridFinishedFuture(ctx, err);
+            return new GridFinishedFuture(err);
         }
         else if (req.delta() == null) {
             IgniteCheckedException err =
                 new IgniteCheckedException(GridRestCommandHandlerAdapter.missingParameter("delta"));
 
-            return new GridFinishedFuture(ctx, err);
+            return new GridFinishedFuture(err);
         }
 
         return ctx.closure().callLocalSafe(new Callable<Object>() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
index 78b6bd1..87f0fc3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/task/GridTaskCommandHandler.java
@@ -136,7 +136,7 @@ public class GridTaskCommandHandler extends GridRestCommandHandlerAdapter {
         catch (IgniteCheckedException e) {
             U.error(log, "Failed to execute task command: " + req, e);
 
-            return new GridFinishedFuture<>(ctx, e);
+            return new GridFinishedFuture<>(e);
         }
         finally {
             if (log.isDebugEnabled())
@@ -159,7 +159,7 @@ public class GridTaskCommandHandler extends GridRestCommandHandlerAdapter {
 
         GridRestTaskRequest req0 = (GridRestTaskRequest) req;
 
-        final GridFutureAdapter<GridRestResponse> fut = new GridFutureAdapter<>(ctx);
+        final GridFutureAdapter<GridRestResponse> fut = new GridFutureAdapter<>();
 
         final GridRestResponse res = new GridRestResponse();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
index 7c2a15b..d563f9f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/top/GridTopologyCommandHandler.java
@@ -94,7 +94,7 @@ public class GridTopologyCommandHandler extends GridRestCommandHandlerAdapter {
                 final String ip = req0.nodeIp();
 
                 if (id == null && ip == null)
-                    return new GridFinishedFuture<>(ctx, new IgniteCheckedException(
+                    return new GridFinishedFuture<>(new IgniteCheckedException(
                         "Failed to handle request (either id or ip should be specified)."));
 
                 ClusterNode node;
@@ -131,7 +131,7 @@ public class GridTopologyCommandHandler extends GridRestCommandHandlerAdapter {
         if (log.isDebugEnabled())
             log.debug("Handled topology REST request [res=" + res + ", req=" + req + ']');
 
-        return new GridFinishedFuture<>(ctx, res);
+        return new GridFinishedFuture<>(res);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
index c66de86..2bfb704 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/version/GridVersionCommandHandler.java
@@ -54,6 +54,6 @@ public class GridVersionCommandHandler extends GridRestCommandHandlerAdapter {
 
         assert SUPPORTED_COMMANDS.contains(req.command());
 
-        return new GridFinishedFuture<>(ctx, new GridRestResponse(VER_STR));
+        return new GridFinishedFuture<>(new GridRestResponse(VER_STR));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpMemcachedNioListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpMemcachedNioListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpMemcachedNioListener.java
index 43e47cd..aa1abd8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpMemcachedNioListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpMemcachedNioListener.java
@@ -135,8 +135,8 @@ public class GridTcpMemcachedNioListener extends GridNioServerListenerAdapter<Gr
                     @Override public IgniteInternalFuture<GridRestResponse> apply(GridRestResponse res, Exception e) {
                         return handleRequest0(ses, req, cmd);
                     }
-                },
-                ctx);
+                }
+            );
         }
 
         if (f != null)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentFuture.java
index da4733b..f05fdf6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentFuture.java
@@ -37,7 +37,7 @@ public class GridServiceDeploymentFuture extends GridFutureAdapter<Object> {
      * @param cfg Configuration.
      */
     public GridServiceDeploymentFuture(GridKernalContext ctx, ServiceConfiguration cfg) {
-        super(ctx);
+        super();
 
         this.cfg = cfg;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index 1793beb..aac9d90 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -386,7 +386,7 @@ public class GridServiceProcessor extends GridProcessorAdapter {
 
                 U.error(log, "Failed to deploy service: " + cfg.getName(), e);
 
-                return new GridFinishedFuture<>(ctx, e);
+                return new GridFinishedFuture<>(e);
             }
         }
     }
@@ -398,7 +398,7 @@ public class GridServiceProcessor extends GridProcessorAdapter {
     public IgniteInternalFuture<?> cancel(String name) {
         while (true) {
             try {
-                GridFutureAdapter<?> fut = new GridFutureAdapter<>(ctx);
+                GridFutureAdapter<?> fut = new GridFutureAdapter<>();
 
                 GridFutureAdapter<?> old;
 
@@ -424,7 +424,7 @@ public class GridServiceProcessor extends GridProcessorAdapter {
             catch (IgniteCheckedException e) {
                 log.error("Failed to undeploy service: " + name, e);
 
-                return new GridFinishedFuture<>(ctx, e);
+                return new GridFinishedFuture<>(e);
             }
         }
     }
@@ -446,7 +446,7 @@ public class GridServiceProcessor extends GridProcessorAdapter {
             futs.add(cancel(dep.configuration().getName()));
         }
 
-        return futs.isEmpty() ? new GridFinishedFuture<>(ctx) : new GridCompoundFuture(ctx, null, futs);
+        return futs.isEmpty() ? new GridFinishedFuture<>() : new GridCompoundFuture(ctx, null, futs);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamerStageExecutionFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamerStageExecutionFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamerStageExecutionFuture.java
index 31c4c0e..beb2820 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamerStageExecutionFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/streamer/GridStreamerStageExecutionFuture.java
@@ -114,8 +114,6 @@ public class GridStreamerStageExecutionFuture extends GridFutureAdapter<Object>
         String stageName,
         Collection<?> evts
     ) {
-        super(streamer.kernalContext());
-
         assert streamer != null;
         assert stageName != null;
         assert evts != null;
@@ -226,7 +224,7 @@ public class GridStreamerStageExecutionFuture extends GridFutureAdapter<Object>
             }
         }
         catch (IgniteCheckedException e) {
-            onFailed(ctx.localNodeId(), e);
+            onFailed(streamer.kernalContext().localNodeId(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
index 0750259..7139564 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
@@ -78,7 +78,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
      * @param ctx Context.
      */
     public GridCompoundFuture(GridKernalContext ctx) {
-        super(ctx);
+        super();
     }
 
     /**
@@ -86,7 +86,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
      * @param rdc Reducer.
      */
     public GridCompoundFuture(GridKernalContext ctx, @Nullable IgniteReducer<T, R> rdc) {
-        super(ctx);
+        super();
 
         this.rdc = rdc;
     }
@@ -98,7 +98,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
      */
     public GridCompoundFuture(GridKernalContext ctx, @Nullable IgniteReducer<T, R> rdc,
         @Nullable Iterable<IgniteInternalFuture<T>> futs) {
-        super(ctx);
+        super();
 
         this.rdc = rdc;
 
@@ -248,14 +248,14 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
                     res.compareAndSet(null, rdc.reduce(), false, true);
             }
             catch (RuntimeException e) {
-                U.error(log, "Failed to execute compound future reducer: " + this, e);
+                U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                 onDone(e);
 
                 return;
             }
             catch (AssertionError e) {
-                U.error(log, "Failed to execute compound future reducer: " + this, e);
+                U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                 onDone(e);
 
@@ -320,13 +320,13 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
                         res.compareAndSet(null, rdc.reduce(), false, true);
                 }
                 catch (RuntimeException e) {
-                    U.error(log, "Failed to execute compound future reducer: " + this, e);
+                    U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                     // Exception in reducer is a bug, so we bypass checkComplete here.
                     onDone(e);
                 }
                 catch (AssertionError e) {
-                    U.error(log, "Failed to execute compound future reducer: " + this, e);
+                    U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                     // Bypass checkComplete because need to rethrow.
                     onDone(e);
@@ -335,36 +335,36 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> {
                 }
             }
             catch (IgniteTxOptimisticCheckedException e) {
-                if (log.isDebugEnabled())
-                    log.debug("Optimistic failure [fut=" + GridCompoundFuture.this + ", err=" + e + ']');
+//                if (log.isDebugEnabled())
+//                    log.debug("Optimistic failure [fut=" + GridCompoundFuture.this + ", err=" + e + ']');
 
                 err.compareAndSet(null, e);
             }
             catch (ClusterTopologyCheckedException e) {
-                if (log.isDebugEnabled())
-                    log.debug("Topology exception [fut=" + GridCompoundFuture.this + ", err=" + e + ']');
+//                if (log.isDebugEnabled())
+//                    log.debug("Topology exception [fut=" + GridCompoundFuture.this + ", err=" + e + ']');
 
                 err.compareAndSet(null, e);
             }
             catch (IgniteFutureCancelledCheckedException e) {
-                if (log.isDebugEnabled())
-                    log.debug("Failed to execute compound future reducer [lsnr=" + this + ", e=" + e + ']');
+//                if (log.isDebugEnabled())
+//                    log.debug("Failed to execute compound future reducer [lsnr=" + this + ", e=" + e + ']');
 
                 err.compareAndSet(null, e);
             }
             catch (IgniteCheckedException e) {
-                if (!ignoreFailure(e))
-                    U.error(log, "Failed to execute compound future reducer: " + this, e);
+//                if (!ignoreFailure(e))
+//                    U.error(log, "Failed to execute compound future reducer: " + this, e);
 
                 err.compareAndSet(null, e);
             }
             catch (RuntimeException e) {
-                U.error(log, "Failed to execute compound future reducer: " + this, e);
+                U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                 err.compareAndSet(null, e);
             }
             catch (AssertionError e) {
-                U.error(log, "Failed to execute compound future reducer: " + this, e);
+                U.error(null, "Failed to execute compound future reducer: " + this, e);
 
                 // Bypass checkComplete because need to rethrow.
                 onDone(e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridEmbeddedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridEmbeddedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridEmbeddedFuture.java
index 41f0ba4..b3ec22d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridEmbeddedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridEmbeddedFuture.java
@@ -45,13 +45,14 @@ public class GridEmbeddedFuture<A, B> extends GridFutureAdapter<A> {
     }
 
     /**
-     * @param ctx Context.
      * @param embedded Embedded future.
      * @param c Closure to execute upon completion of embedded future.
      */
-    public GridEmbeddedFuture(GridKernalContext ctx, IgniteInternalFuture<B> embedded, final IgniteBiClosure<B, Exception, A> c) {
-        super(ctx);
-
+    public GridEmbeddedFuture(
+        IgniteInternalFuture<B> embedded,
+        final IgniteBiClosure<B, Exception, A> c,
+        boolean fake
+    ) {
         assert embedded != null;
         assert c != null;
 
@@ -77,30 +78,11 @@ public class GridEmbeddedFuture<A, B> extends GridFutureAdapter<A> {
 
     /**
      * Embeds futures. Specific change order of arguments to avoid conflicts.
-     *
-     * @param syncNotify Synchronous notify flag.
-     * @param embedded Closure.
-     * @param c Closure which runs upon completion of embedded closure and which returns another future.
-     * @param ctx Context.
-     */
-    public GridEmbeddedFuture(boolean syncNotify, IgniteInternalFuture<B> embedded, IgniteBiClosure<B, Exception, IgniteInternalFuture<A>> c,
-        GridKernalContext ctx) {
-        this(embedded, c, ctx);
-
-        syncNotify(syncNotify);
-    }
-
-    /**
-     * Embeds futures. Specific change order of arguments to avoid conflicts.
-     *
-     * @param ctx Context.
-     * @param embedded Closure.
+     *  @param embedded Closure.
      * @param c Closure which runs upon completion of embedded closure and which returns another future.
      */
-    public GridEmbeddedFuture(IgniteInternalFuture<B> embedded, final IgniteBiClosure<B, Exception, IgniteInternalFuture<A>> c,
-        GridKernalContext ctx) {
-        super(ctx);
-
+    public GridEmbeddedFuture(
+        IgniteInternalFuture<B> embedded, final IgniteBiClosure<B, Exception, IgniteInternalFuture<A>> c) {
         assert embedded != null;
         assert c != null;
 
@@ -158,15 +140,15 @@ public class GridEmbeddedFuture<A, B> extends GridFutureAdapter<A> {
     /**
      * Embeds futures.
      *
-     * @param ctx Context.
      * @param embedded Future.
      * @param c1 Closure which runs upon completion of embedded future and which returns another future.
      * @param c2 Closure will runs upon completion of future returned by {@code c1} closure.
      */
-    public GridEmbeddedFuture(GridKernalContext ctx, IgniteInternalFuture<B> embedded, final IgniteBiClosure<B, Exception,
-        IgniteInternalFuture<A>> c1, final IgniteBiClosure<A, Exception, A> c2) {
-        super(ctx);
-
+    public GridEmbeddedFuture(
+        IgniteInternalFuture<B> embedded, final IgniteBiClosure<B, Exception,
+        IgniteInternalFuture<A>> c1,
+        final IgniteBiClosure<A, Exception, A> c2
+    ) {
         assert embedded != null;
         assert c1 != null;
         assert c2 != null;
@@ -268,7 +250,7 @@ public class GridEmbeddedFuture<A, B> extends GridFutureAdapter<A> {
                 applyx(f);
             }
             catch (IgniteIllegalStateException ignore) {
-                U.warn(log, "Will not execute future listener (grid is stopping): " + ctx.gridName());
+                U.warn(null, "Will not execute future listener (grid is stopping): " + this);
             }
             catch (Exception e) {
                 onDone(e);
@@ -300,7 +282,7 @@ public class GridEmbeddedFuture<A, B> extends GridFutureAdapter<A> {
                 applyx(f);
             }
             catch (IgniteIllegalStateException ignore) {
-                U.warn(log, "Will not execute future listener (grid is stopping): " + ctx.gridName());
+                U.warn(null, "Will not execute future listener (grid is stopping): " + this);
             }
             catch (Exception e) {
                 onDone(e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
index c2f1b89..31f6734 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
@@ -21,40 +21,24 @@ import org.apache.ignite.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
-import org.jetbrains.annotations.*;
 
-import java.io.*;
 import java.util.concurrent.*;
 
-import static org.apache.ignite.IgniteSystemProperties.*;
-
 /**
  * Future that is completed at creation time.
  */
-public class GridFinishedFuture<T> implements IgniteInternalFuture<T>, Externalizable {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** Synchronous notification flag. */
-    private static final boolean SYNC_NOTIFY = IgniteSystemProperties.getBoolean(IGNITE_FUT_SYNC_NOTIFICATION, true);
-
+public class GridFinishedFuture<T> implements IgniteInternalFuture<T> {
     /** Complete value. */
     private T t;
 
     /** Error. */
     private Throwable err;
 
-    /** Context. */
-    protected GridKernalContext ctx;
-
     /** Start time. */
     private final long startTime = U.currentTimeMillis();
 
-    /** Synchronous notification flag. */
-    private volatile boolean syncNotify = SYNC_NOTIFY;
-
     /**
-     * Empty constructor required for {@link Externalizable}.
+     * Creates finished future with complete value.
      */
     public GridFinishedFuture() {
         // No-op.
@@ -63,43 +47,31 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T>, Externali
     /**
      * Creates finished future with complete value.
      *
-     * @param ctx Context.
-     */
-    public GridFinishedFuture(GridKernalContext ctx) {
-        assert ctx != null;
-
-        this.ctx = ctx;
-
-        t = null;
-        err = null;
-    }
-
-    /**
-     * Creates finished future with complete value.
-     *
-     * @param ctx Context.
      * @param t Finished value.
      */
-    public GridFinishedFuture(GridKernalContext ctx, T t) {
-        assert ctx != null;
-
-        this.ctx = ctx;
+    public GridFinishedFuture(T t) {
         this.t = t;
-
-        err = null;
     }
 
     /**
-     * @param ctx Context.
      * @param err Future error.
      */
-    public GridFinishedFuture(GridKernalContext ctx, Throwable err) {
-        assert ctx != null;
-
-        this.ctx = ctx;
+    public GridFinishedFuture(Throwable err) {
         this.err = err;
+    }
 
-        t = null;
+    /**
+     * @return Value of error.
+     */
+    protected Throwable error() {
+        return err;
+    }
+
+    /**
+     * @return Value of result.
+     */
+    protected T result() {
+        return t;
     }
 
     /** {@inheritDoc} */
@@ -113,26 +85,6 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T>, Externali
     }
 
     /** {@inheritDoc} */
-    @Override public boolean concurrentNotify() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void concurrentNotify(boolean concurNotify) {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public void syncNotify(boolean syncNotify) {
-        this.syncNotify = syncNotify;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean syncNotify() {
-        return syncNotify;
-    }
-
-    /** {@inheritDoc} */
     @Override public boolean cancel() {
         return false;
     }
@@ -167,52 +119,24 @@ public class GridFinishedFuture<T> implements IgniteInternalFuture<T>, Externali
 
     /** {@inheritDoc} */
     @Override public void listenAsync(final IgniteInClosure<? super IgniteInternalFuture<T>> lsnr) {
-        if (ctx == null)
-            throw new IllegalStateException("Cannot attach listener to deserialized future (context is null): " + this);
-
-        if (lsnr != null) {
-            if (syncNotify)
-                lsnr.apply(this);
-            else
-                ctx.closure().runLocalSafe(new GPR() {
-                    @Override public void run() {
-                        lsnr.apply(GridFinishedFuture.this);
-                    }
-                }, true);
-        }
+        if (lsnr != null)
+            lsnr.apply(this);
     }
 
     /** {@inheritDoc} */
     @Override public <R> IgniteInternalFuture<R> chain(final IgniteClosure<? super IgniteInternalFuture<T>, R> doneCb) {
-        GridFutureAdapter<R> fut = new GridFutureAdapter<R>(ctx, syncNotify) {
+        GridFutureAdapter<R> fut = new GridFutureAdapter<R>() {
             @Override public String toString() {
                 return "ChainFuture[orig=" + GridFinishedFuture.this + ", doneCb=" + doneCb + ']';
             }
         };
 
-        listenAsync(new GridFutureChainListener<>(ctx, fut, doneCb));
+        listenAsync(new GridFutureChainListener<>(fut, doneCb));
 
         return fut;
     }
 
     /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(t);
-        out.writeObject(err);
-        out.writeObject(ctx);
-        out.writeBoolean(syncNotify);
-    }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"unchecked"})
-    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        t = (T)in.readObject();
-        err = (Throwable)in.readObject();
-        ctx = (GridKernalContext)in.readObject();
-        syncNotify = in.readBoolean();
-    }
-
-    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridFinishedFuture.class, this);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
deleted file mode 100644
index 84323be..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFutureEx.java
+++ /dev/null
@@ -1,192 +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.util.future;
-
-import org.apache.ignite.*;
-import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.util.lang.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.lang.*;
-import org.jetbrains.annotations.*;
-
-import java.io.*;
-import java.util.concurrent.*;
-
-/**
- * Future that is completed at creation time. This future is different from
- * {@link GridFinishedFuture} as it does not take context as a parameter and
- * performs notifications in the same thread.
- */
-public class GridFinishedFutureEx<T> implements IgniteInternalFuture<T>, Externalizable {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** Complete value. */
-    private T t;
-
-    /** Error. */
-    private Throwable err;
-
-    /** Start time. */
-    private final long startTime = U.currentTimeMillis();
-
-    /**
-     * Created finished future with {@code null} value.
-     */
-    public GridFinishedFutureEx() {
-        this(null, null);
-    }
-
-    /**
-     * Creates finished future with complete value.
-     *
-     * @param t Finished value.
-     */
-    public GridFinishedFutureEx(T t) {
-        this(t, null);
-    }
-
-    /**
-     * @param err Future error.
-     */
-    public GridFinishedFutureEx(Throwable err) {
-        this(null, err);
-    }
-
-    /**
-     * Creates finished future with complete value and error.
-     *
-     * @param t Finished value.
-     * @param err Future error.
-     */
-    public GridFinishedFutureEx(T t, Throwable err) {
-        this.err = err;
-
-        this.t = t;
-    }
-
-    /** {@inheritDoc} */
-    @Override public long startTime() {
-        return startTime;
-    }
-
-    /** {@inheritDoc} */
-    @Override public long duration() {
-        return 0;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean concurrentNotify() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void concurrentNotify(boolean concurNotify) {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public void syncNotify(boolean syncNotify) {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean syncNotify() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean cancel() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isCancelled() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isDone() {
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public T get() throws IgniteCheckedException {
-        if (err != null)
-            throw U.cast(err);
-
-        return t;
-    }
-
-    /** {@inheritDoc} */
-    @Override public T get(long timeout) throws IgniteCheckedException {
-        return get();
-    }
-
-    /** {@inheritDoc} */
-    @Override public T get(long timeout, TimeUnit unit) throws IgniteCheckedException {
-        return get();
-    }
-
-    /** {@inheritDoc} */
-    @Override public <R> IgniteInternalFuture<R> chain(IgniteClosure<? super IgniteInternalFuture<T>, R> doneCb) {
-        try {
-            return new GridFinishedFutureEx<>(doneCb.apply(this));
-        }
-        catch (GridClosureException e) {
-            return new GridFinishedFutureEx<>(U.unwrap(e));
-        }
-        catch (RuntimeException | Error e) {
-            U.warn(null, "Failed to notify chained future [doneCb=" + doneCb + ", err=" + e.getMessage() + ']');
-
-            throw e;
-        }
-    }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"unchecked"})
-    @Override public void listenAsync(IgniteInClosure<? super IgniteInternalFuture<T>> lsnr) {
-        if (lsnr != null)
-            lsnr.apply(this);
-    }
-
-    /**
-     * @return {@code True} if future failed.
-     */
-    protected boolean failed() {
-        return err != null;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(t);
-        out.writeObject(err);
-    }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"unchecked"})
-    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        t = (T)in.readObject();
-        err = (Throwable)in.readObject();
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(GridFinishedFutureEx.class, this);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
index 4beb89a..b107c15 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
@@ -24,35 +24,17 @@ import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
 import org.jetbrains.annotations.*;
 
-import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
 import java.util.concurrent.locks.*;
 
-import static org.apache.ignite.IgniteSystemProperties.*;
-
 /**
  * Future adapter.
  */
-public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements IgniteInternalFuture<R>,
-    Externalizable {
+public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements IgniteInternalFuture<R> {
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Logger reference. */
-    private static final AtomicReference<IgniteLogger> logRef = new AtomicReference<>();
-
-    /** Logger. */
-    protected static IgniteLogger log;
-
-    /** Synchronous notification flag. */
-    private static final boolean SYNC_NOTIFY = IgniteSystemProperties.getBoolean(IGNITE_FUT_SYNC_NOTIFICATION, true);
-
-    /** Concurrent notification flag. */
-    private static final boolean CONCUR_NOTIFY =
-        IgniteSystemProperties.getBoolean(IGNITE_FUT_CONCURRENT_NOTIFICATION, false);
-
     /** Initial state. */
     private static final int INIT = 0;
 
@@ -75,52 +57,12 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
     /** Future end time. */
     private volatile long endTime;
 
-    /** Set to {@code false} on deserialization whenever incomplete future is serialized. */
-    private boolean valid = true;
-
     /** Asynchronous listeners. */
     private Collection<IgniteInClosure<? super IgniteInternalFuture<R>>> lsnrs;
 
-    /** Context. */
-    protected GridKernalContext ctx;
-
-    /** Synchronous notification flag. */
-    private volatile boolean syncNotify = SYNC_NOTIFY;
-
-    /** Concurrent notification flag. */
-    private volatile boolean concurNotify = CONCUR_NOTIFY;
-
     /** */
     private final Object mux = new Object();
 
-    /**
-     * Empty constructor required for {@link Externalizable}.
-     */
-    public GridFutureAdapter() {
-        // No-op.
-    }
-
-    /**
-     * @param ctx Kernal context.
-     */
-    public GridFutureAdapter(GridKernalContext ctx) {
-        this(ctx, SYNC_NOTIFY);
-    }
-
-    /**
-     * @param syncNotify Synchronous notify flag.
-     * @param ctx Kernal context.
-     */
-    public GridFutureAdapter(GridKernalContext ctx, boolean syncNotify) {
-        assert ctx != null;
-
-        this.syncNotify = syncNotify;
-
-        this.ctx = ctx;
-
-        log = U.logger(ctx, logRef, GridFutureAdapter.class);
-    }
-
     /** {@inheritDoc} */
     @Override public long startTime() {
         return startTime;
@@ -140,48 +82,10 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
         return endTime;
     }
 
-    /** {@inheritDoc} */
-    @Override public boolean concurrentNotify() {
-        return concurNotify;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void concurrentNotify(boolean concurNotify) {
-        this.concurNotify = concurNotify;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean syncNotify() {
-        return syncNotify;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void syncNotify(boolean syncNotify) {
-        this.syncNotify = syncNotify;
-    }
-
-    /**
-     * Checks that future is in usable state.
-     */
-    protected void checkValid() {
-        if (!valid)
-            throw new IllegalStateException("Incomplete future was serialized and cannot " +
-                "be used after deserialization.");
-    }
-
-    /**
-     * @return Valid flag.
-     */
-    protected boolean isValid() {
-        return valid;
-    }
-
     /**
      * @return Value of error.
      */
     protected Throwable error() {
-        checkValid();
-
         return err;
     }
 
@@ -189,15 +93,11 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
      * @return Value of result.
      */
     protected R result() {
-        checkValid();
-
         return res;
     }
 
     /** {@inheritDoc} */
     @Override public R get() throws IgniteCheckedException {
-        checkValid();
-
         try {
             if (endTime == 0)
                 acquireSharedInterruptibly(0);
@@ -228,8 +128,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
         A.ensure(timeout >= 0, "timeout cannot be negative: " + timeout);
         A.notNull(unit, "unit");
 
-        checkValid();
-
         try {
             return get0(unit.toNanos(timeout));
         }
@@ -263,8 +161,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
     /** {@inheritDoc} */
     @Override public void listenAsync(@Nullable final IgniteInClosure<? super IgniteInternalFuture<R>> lsnr) {
         if (lsnr != null) {
-            checkValid();
-
             boolean done = isDone();
 
             if (!done) {
@@ -281,27 +177,14 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
             }
 
             if (done) {
-                try {
-                    if (syncNotify)
-                        notifyListener(lsnr);
-                    else {
-                        ctx.closure().runLocalSafe(new GPR() {
-                            @Override public void run() {
-                                notifyListener(lsnr);
-                            }
-                        }, true);
-                    }
-                }
-                catch (IllegalStateException ignore) {
-                    U.warn(null, "Future notification will not proceed because grid is stopped: " + ctx.gridName());
-                }
+                notifyListener(lsnr);
             }
         }
     }
 
     /** {@inheritDoc} */
     @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb) {
-        return new ChainFuture<>(ctx, syncNotify, this, doneCb);
+        return new ChainFuture<>(this, doneCb);
     }
 
     /**
@@ -321,30 +204,8 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
 
         assert !lsnrs0.isEmpty();
 
-        if (concurNotify) {
-            for (final IgniteInClosure<? super IgniteInternalFuture<R>> lsnr : lsnrs0)
-                ctx.closure().runLocalSafe(new GPR() {
-                    @Override public void run() {
-                        notifyListener(lsnr);
-                    }
-                }, true);
-        }
-        else {
-            // Always notify in the thread different from start thread.
-            if (!syncNotify) {
-                ctx.closure().runLocalSafe(new GPR() {
-                    @Override public void run() {
-                        // Since concurrent notifications are off, we notify
-                        // all listeners in one thread.
-                        for (IgniteInClosure<? super IgniteInternalFuture<R>> lsnr : lsnrs0)
-                            notifyListener(lsnr);
-                    }
-                }, true);
-            }
-            else
-                for (IgniteInClosure<? super IgniteInternalFuture<R>> lsnr : lsnrs0)
-                    notifyListener(lsnr);
-        }
+        for (IgniteInClosure<? super IgniteInternalFuture<R>> lsnr : lsnrs0)
+            notifyListener(lsnr);
     }
 
     /**
@@ -359,11 +220,11 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
             lsnr.apply(this);
         }
         catch (IllegalStateException e) {
-            U.warn(null, "Failed to notify listener (is grid stopped?) [grid=" + ctx.gridName() +
+            U.warn(null, "Failed to notify listener (is grid stopped?) [fut=" + this +
                 ", lsnr=" + lsnr + ", err=" + e.getMessage() + ']');
         }
         catch (RuntimeException | Error e) {
-            U.error(log, "Failed to notify listener: " + lsnr, e);
+            U.error(null, "Failed to notify listener: " + lsnr, e);
 
             throw e;
         }
@@ -376,8 +237,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
      * indeed did happen.
      */
     @Override public boolean cancel() throws IgniteCheckedException {
-        checkValid();
-
         return false;
     }
 
@@ -398,8 +257,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
 
     /** {@inheritDoc} */
     @Override public boolean isCancelled() {
-        checkValid();
-
         return getState() == CANCELLED;
     }
 
@@ -454,8 +311,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
      * @return {@code True} if result was set by this call.
      */
     private boolean onDone(@Nullable R res, @Nullable Throwable err, boolean cancel) {
-        checkValid();
-
         boolean notify = false;
 
         try {
@@ -510,54 +365,6 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
     }
 
     /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        int state0 = getState();
-
-        out.writeByte(state0);
-        out.writeBoolean(syncNotify);
-        out.writeBoolean(concurNotify);
-
-        // Don't write any further if not done, as deserialized future
-        // will be invalid anyways.
-        if (state0 != INIT) {
-            try {
-                acquireSharedInterruptibly(0);
-            }
-            catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-
-                throw new IOException("Thread has been interrupted.", e);
-            }
-
-            out.writeObject(res);
-            out.writeObject(err);
-            out.writeObject(ctx);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        int state0 = in.readByte();
-
-        setState(state0);
-
-        syncNotify = in.readBoolean();
-        concurNotify = in.readBoolean();
-
-        if (state0 == INIT)
-            valid = false;
-        else {
-            res = (R)in.readObject();
-            err = (Throwable)in.readObject();
-            ctx = (GridKernalContext)in.readObject();
-
-            // Prevent any thread from being locked on deserialized future.
-            // This will also set 'endTime'.
-            releaseShared(0);
-        }
-    }
-
-    /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(GridFutureAdapter.class, this, "state", state());
     }
@@ -583,19 +390,19 @@ public class GridFutureAdapter<R> extends AbstractQueuedSynchronizer implements
         }
 
         /**
-         * @param ctx Context.
-         * @param syncNotify Sync notify flag.
          * @param fut Future.
          * @param doneCb Closure.
          */
-        ChainFuture(GridKernalContext ctx, boolean syncNotify,
-            GridFutureAdapter<R> fut, IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb) {
-            super(ctx, syncNotify);
+        ChainFuture(
+            GridFutureAdapter<R> fut,
+            IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb
+        ) {
+            super();
 
             this.fut = fut;
             this.doneCb = doneCb;
 
-            fut.listenAsync(new GridFutureChainListener<>(ctx, this, doneCb));
+            fut.listenAsync(new GridFutureChainListener<>(this, doneCb));
         }
 
         /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
deleted file mode 100644
index ccce6e7..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapterEx.java
+++ /dev/null
@@ -1,500 +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.util.future;
-
-import org.apache.ignite.*;
-import org.apache.ignite.internal.*;
-import org.apache.ignite.internal.util.lang.*;
-import org.apache.ignite.internal.util.tostring.*;
-import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.lang.*;
-import org.jdk8.backport.*;
-import org.jetbrains.annotations.*;
-
-import java.io.*;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.concurrent.atomic.*;
-import java.util.concurrent.locks.*;
-
-/**
- * Future adapter without kernal context.
- */
-public class GridFutureAdapterEx<R> extends AbstractQueuedSynchronizer implements IgniteInternalFuture<R>,
-    Externalizable {
-    /** */
-    private static final long serialVersionUID = 0L;
-
-    /** Initial state. */
-    private static final int INIT = 0;
-
-    /** Cancelled state. */
-    private static final int CANCELLED = 1;
-
-    /** Done state. */
-    private static final int DONE = 2;
-
-    /** Result. */
-    @GridToStringInclude
-    private R res;
-
-    /** Error. */
-    private Throwable err;
-
-    /** Future start time. */
-    private final long startTime = U.currentTimeMillis();
-
-    /** Future end time. */
-    private volatile long endTime;
-
-    /** Set to {@code false} on deserialization whenever incomplete future is serialized. */
-    private boolean valid = true;
-
-    /** Asynchronous listener. */
-    private final ConcurrentLinkedDeque8<IgniteInClosure<? super IgniteInternalFuture<R>>>
-        lsnrs = new ConcurrentLinkedDeque8<>();
-
-    /**
-     * Empty constructor required for {@link Externalizable}.
-     */
-    @SuppressWarnings("RedundantNoArgConstructor")
-    public GridFutureAdapterEx() {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public long startTime() {
-        return startTime;
-    }
-
-    /** {@inheritDoc} */
-    @Override public long duration() {
-        long endTime = this.endTime;
-
-        return endTime == 0 ? U.currentTimeMillis() - startTime : endTime - startTime;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean concurrentNotify() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void concurrentNotify(boolean concurNotify) {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean syncNotify() {
-        return true;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void syncNotify(boolean syncNotify) {
-        // No-op
-    }
-
-    /**
-     * Checks that future is in usable state.
-     */
-    protected void checkValid() {
-        if (!valid)
-            throw new IllegalStateException("Incomplete future was serialized and cannot " +
-                "be used after deserialization.");
-    }
-
-    /**
-     * @return Valid flag.
-     */
-    protected boolean isValid() {
-        return valid;
-    }
-
-    /**
-     * @return Value of error.
-     */
-    protected Throwable error() {
-        checkValid();
-
-        return err;
-    }
-
-    /**
-     * @return Value of result.
-     */
-    protected R result() {
-        checkValid();
-
-        return res;
-    }
-
-    /** {@inheritDoc} */
-    @Override public R get() throws IgniteCheckedException {
-        checkValid();
-
-        try {
-            if (endTime == 0)
-                acquireSharedInterruptibly(0);
-
-            if (getState() == CANCELLED)
-                throw new IgniteFutureCancelledCheckedException("Future was cancelled: " + this);
-
-            if (err != null)
-                throw U.cast(err);
-
-            return res;
-        }
-        catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-
-            throw new IgniteInterruptedCheckedException(e);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public R get(long timeout) throws IgniteCheckedException {
-        // Do not replace with static import, as it may not compile.
-        return get(timeout, TimeUnit.MILLISECONDS);
-    }
-
-    /** {@inheritDoc} */
-    @Override public R get(long timeout, TimeUnit unit) throws IgniteCheckedException {
-        A.ensure(timeout >= 0, "timeout cannot be negative: " + timeout);
-        A.notNull(unit, "unit");
-
-        checkValid();
-
-        try {
-            return get0(unit.toNanos(timeout));
-        }
-        catch (InterruptedException e) {
-            Thread.currentThread().interrupt();
-
-            throw new IgniteInterruptedCheckedException("Got interrupted while waiting for future to complete.", e);
-        }
-    }
-
-    /**
-     * @param nanosTimeout Timeout (nanoseconds).
-     * @return Result.
-     * @throws InterruptedException If interrupted.
-     * @throws org.apache.ignite.internal.IgniteFutureTimeoutCheckedException If timeout reached before computation completed.
-     * @throws IgniteCheckedException If error occurred.
-     */
-    @Nullable protected R get0(long nanosTimeout) throws InterruptedException, IgniteCheckedException {
-        if (endTime == 0 && !tryAcquireSharedNanos(0, nanosTimeout))
-            throw new IgniteFutureTimeoutCheckedException("Timeout was reached before computation completed.");
-
-        if (getState() == CANCELLED)
-            throw new IgniteFutureCancelledCheckedException("Future was cancelled: " + this);
-
-        if (err != null)
-            throw U.cast(err);
-
-        return res;
-    }
-
-    /** {@inheritDoc} */
-    @SuppressWarnings({"unchecked", "TooBroadScope"})
-    @Override public void listenAsync(@Nullable final IgniteInClosure<? super IgniteInternalFuture<R>> lsnr) {
-        if (lsnr != null) {
-            checkValid();
-
-            boolean done;
-
-            IgniteInClosure<? super IgniteInternalFuture<R>> lsnr0 = lsnr;
-
-            done = isDone();
-
-            if (!done) {
-                lsnr0 = new IgniteInClosure<IgniteInternalFuture<R>>() {
-                    private final AtomicBoolean called = new AtomicBoolean();
-
-                    @Override public void apply(IgniteInternalFuture<R> t) {
-                        if (called.compareAndSet(false, true))
-                            lsnr.apply(t);
-                    }
-
-                    @Override public boolean equals(Object o) {
-                        return o != null && (o == this || o == lsnr || o.equals(lsnr));
-                    }
-
-                    @Override public String toString() {
-                        return lsnr.toString();
-                    }
-                };
-
-                lsnrs.add(lsnr0);
-
-                done = isDone(); // Double check.
-            }
-
-            if (done)
-                notifyListener(lsnr0);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb) {
-        final GridFutureAdapterEx<T> fut = new GridFutureAdapterEx<T>() {
-            @Override public String toString() {
-                return "ChainFuture[orig=" + GridFutureAdapterEx.this + ", doneCb=" + doneCb + ']';
-            }
-        };
-
-        listenAsync(new IgniteInClosure<IgniteInternalFuture<R>>() {
-            @Override public void apply(IgniteInternalFuture<R> t) {
-                try {
-                    fut.onDone(doneCb.apply(t));
-                }
-                catch (GridClosureException e) {
-                    fut.onDone(e.unwrap());
-                }
-                catch (RuntimeException e) {
-                    U.warn(null, "Failed to notify chained future (is grid stopped?) [, doneCb=" + doneCb +
-                        ", err=" + e.getMessage() + ']');
-
-                    fut.onDone(e);
-
-                    throw e;
-                }
-                catch (Error e) {
-                    U.warn(null, "Failed to notify chained future (is grid stopped?) [doneCb=" + doneCb +
-                        ", err=" + e.getMessage() + ']');
-
-                    fut.onDone(e);
-
-                    throw e;
-                }
-            }
-        });
-
-        return fut;
-    }
-
-    /**
-     * Notifies all registered listeners.
-     */
-    private void notifyListeners() {
-        if (lsnrs.isEmptyx())
-            return;
-
-        for (IgniteInClosure<? super IgniteInternalFuture<R>> lsnr : lsnrs)
-            notifyListener(lsnr);
-    }
-
-    /**
-     * Notifies single listener.
-     *
-     * @param lsnr Listener.
-     */
-    private void notifyListener(IgniteInClosure<? super IgniteInternalFuture<R>> lsnr) {
-        assert lsnr != null;
-
-        try {
-            lsnr.apply(this);
-        }
-        catch (IllegalStateException e) {
-            U.warn(null, "Failed to notify listener (is grid stopped?) [lsnr=" + lsnr +
-                ", err=" + e.getMessage() + ']');
-        }
-        catch (RuntimeException | Error e) {
-            U.error(null, "Failed to notify listener: " + lsnr, e);
-
-            throw e;
-        }
-    }
-
-    /**
-     * Default no-op implementation that always returns {@code false}.
-     * Futures that do support cancellation should override this method
-     * and call {@link #onCancelled()} callback explicitly if cancellation
-     * indeed did happen.
-     */
-    @Override public boolean cancel() throws IgniteCheckedException {
-        checkValid();
-
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isDone() {
-        // Don't check for "valid" here, as "done" flag can be read
-        // even in invalid state.
-        return endTime != 0;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isCancelled() {
-        checkValid();
-
-        return getState() == CANCELLED;
-    }
-
-    /**
-     * Callback to notify that future is finished with {@code null} result.
-     * This method must delegate to {@link #onDone(Object, Throwable)} method.
-     *
-     * @return {@code True} if result was set by this call.
-     */
-    public final boolean onDone() {
-        return onDone(null, null);
-    }
-
-    /**
-     * Callback to notify that future is finished.
-     * This method must delegate to {@link #onDone(Object, Throwable)} method.
-     *
-     * @param res Result.
-     * @return {@code True} if result was set by this call.
-     */
-    public final boolean onDone(@Nullable R res) {
-        return onDone(res, null);
-    }
-
-    /**
-     * Callback to notify that future is finished.
-     * This method must delegate to {@link #onDone(Object, Throwable)} method.
-     *
-     * @param err Error.
-     * @return {@code True} if result was set by this call.
-     */
-    public final boolean onDone(@Nullable Throwable err) {
-        return onDone(null, err);
-    }
-
-    /**
-     * Callback to notify that future is finished. Note that if non-{@code null} exception is passed in
-     * the result value will be ignored.
-     *
-     * @param res Optional result.
-     * @param err Optional error.
-     * @return {@code True} if result was set by this call.
-     */
-    public boolean onDone(@Nullable R res, @Nullable Throwable err) {
-        return onDone(res, err, false);
-    }
-
-    /**
-     * @param res Result.
-     * @param err Error.
-     * @param cancel {@code True} if future is being cancelled.
-     * @return {@code True} if result was set by this call.
-     */
-    private boolean onDone(@Nullable R res, @Nullable Throwable err, boolean cancel) {
-        checkValid();
-
-        boolean notify = false;
-
-        try {
-            if (compareAndSetState(INIT, cancel ? CANCELLED : DONE)) {
-                this.res = res;
-                this.err = err;
-
-                notify = true;
-
-                releaseShared(0);
-
-                return true;
-            }
-
-            return false;
-        }
-        finally {
-            if (notify)
-                notifyListeners();
-        }
-    }
-
-    /**
-     * Callback to notify that future is cancelled.
-     *
-     * @return {@code True} if cancel flag was set by this call.
-     */
-    public boolean onCancelled() {
-        return onDone(null, null, true);
-    }
-
-    /** {@inheritDoc} */
-    @Override protected final int tryAcquireShared(int ignore) {
-        return endTime != 0 ? 1 : -1;
-    }
-
-    /** {@inheritDoc} */
-    @Override protected final boolean tryReleaseShared(int ignore) {
-        endTime = U.currentTimeMillis();
-
-        // Always signal after setting final done status.
-        return true;
-    }
-
-    /**
-     * @return String representation of state.
-     */
-    private String state() {
-        int s = getState();
-
-        return s == INIT ? "INIT" : s == CANCELLED ? "CANCELLED" : "DONE";
-    }
-
-    /** {@inheritDoc} */
-    @Override public void writeExternal(ObjectOutput out) throws IOException {
-        int state0 = getState();
-
-        out.writeByte(state0);
-
-        // Don't write any further if not done, as deserialized future
-        // will be invalid anyways.
-        if (state0 != INIT) {
-            try {
-                acquireSharedInterruptibly(0);
-            }
-            catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-
-                throw new IOException("Thread has been interrupted.", e);
-            }
-
-            out.writeObject(res);
-            out.writeObject(err);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        int state0 = in.readByte();
-
-        setState(state0);
-
-        if (state0 == INIT)
-            valid = false;
-        else {
-            res = (R)in.readObject();
-            err = (Throwable)in.readObject();
-
-            // Prevent any thread from being locked on deserialized future.
-            // This will also set 'endTime'.
-            releaseShared(0);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public String toString() {
-        return S.toString(GridFutureAdapterEx.class, this, "state", state());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/c1b46951/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
index 0599053..d98538e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
@@ -29,9 +29,6 @@ public class GridFutureChainListener<T, R> implements IgniteInClosure<IgniteInte
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Context. */
-    private final GridKernalContext ctx;
-
     /** Target future. */
     private final GridFutureAdapter<R> fut;
 
@@ -40,14 +37,13 @@ public class GridFutureChainListener<T, R> implements IgniteInClosure<IgniteInte
 
     /**
      * Constructs chain listener.
-     *
-     * @param ctx Kernal context.
-     * @param fut Target future.
+     *  @param fut Target future.
      * @param doneCb Done callback.
      */
-    public GridFutureChainListener(GridKernalContext ctx, GridFutureAdapter<R> fut,
-        IgniteClosure<? super IgniteInternalFuture<T>, R> doneCb) {
-        this.ctx = ctx;
+    public GridFutureChainListener(
+        GridFutureAdapter<R> fut,
+        IgniteClosure<? super IgniteInternalFuture<T>, R> doneCb
+    ) {
         this.fut = fut;
         this.doneCb = doneCb;
     }
@@ -61,8 +57,8 @@ public class GridFutureChainListener<T, R> implements IgniteInClosure<IgniteInte
             fut.onDone(e.unwrap());
         }
         catch (RuntimeException | Error e) {
-            U.warn(null, "Failed to notify chained future (is grid stopped?) [grid=" + ctx.gridName() +
-                ", doneCb=" + doneCb + ", err=" + e.getMessage() + ']');
+            U.warn(null, "Failed to notify chained future (is grid stopped?) [doneCb=" + doneCb +
+                ", err=" + e.getMessage() + ']');
 
             fut.onDone(e);