IGNITE-10475 Introduce IDEA async debugger annotations - Fixes #5546.

Signed-off-by: Dmitriy Govorukhin <[email protected]>


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

Branch: refs/heads/ignite-10189
Commit: 3fb68f7254802e7f9bca78e42c20e59dd08c49c8
Parents: 26860c5
Author: ibessonov <[email protected]>
Authored: Fri Dec 7 12:50:14 2018 +0300
Committer: Dmitriy Govorukhin <[email protected]>
Committed: Fri Dec 7 12:50:14 2018 +0300

----------------------------------------------------------------------
 .../ignite/internal/IgniteInternalFuture.java   |  4 ++++
 .../internal/util/future/GridFutureAdapter.java | 20 +++++++++++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/3fb68f72/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 76f8c71..b133ef0 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
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteInClosure;
+import org.jetbrains.annotations.Async;
 
 /**
  * Extension for standard {@link Future} interface. It adds simplified 
exception handling,
@@ -107,6 +108,7 @@ public interface IgniteInternalFuture<R> {
      *
      * @param lsnr Listener closure to register. If not provided - this method 
is no-op.
      */
+    @Async.Schedule
     public void listen(IgniteInClosure<? super IgniteInternalFuture<R>> lsnr);
 
     /**
@@ -116,6 +118,7 @@ public interface IgniteInternalFuture<R> {
      * @param doneCb Done callback that is applied to this future when it 
finishes to produce chained future result.
      * @return Chained future that finishes after this future completes and 
done callback is called.
      */
+    @Async.Schedule
     public <T> IgniteInternalFuture<T> chain(IgniteClosure<? super 
IgniteInternalFuture<R>, T> doneCb);
 
     /**
@@ -126,6 +129,7 @@ public interface IgniteInternalFuture<R> {
      * @param exec Executor to run callback.
      * @return Chained future that finishes after this future completes and 
done callback is called.
      */
+    @Async.Schedule
     public <T> IgniteInternalFuture<T> chain(IgniteClosure<? super 
IgniteInternalFuture<R>, T> doneCb, Executor exec);
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/3fb68f72/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 a191f30..6eafe48 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
@@ -34,6 +34,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteInClosure;
+import org.jetbrains.annotations.Async;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -331,7 +332,6 @@ public class GridFutureAdapter<R> implements 
IgniteInternalFuture<R> {
     /**
      * @param head Head of waiters stack.
      */
-    @SuppressWarnings("unchecked")
     private void unblockAll(Node head) {
         while (head != null) {
             unblock(head.val);
@@ -343,21 +343,24 @@ public class GridFutureAdapter<R> implements 
IgniteInternalFuture<R> {
      * @param waiter Waiter to unblock
      */
     private void unblock(Object waiter) {
-        if(waiter instanceof Thread)
+        if (waiter instanceof Thread)
             LockSupport.unpark((Thread)waiter);
         else
             notifyListener((IgniteInClosure<? super 
IgniteInternalFuture<R>>)waiter);
     }
 
     /** {@inheritDoc} */
+    @Async.Schedule
     @Override public void listen(IgniteInClosure<? super 
IgniteInternalFuture<R>> lsnr) {
         if (!registerWaiter(lsnr))
             notifyListener(lsnr);
     }
 
     /** {@inheritDoc} */
-    @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? 
super IgniteInternalFuture<R>, T> doneCb) {
-        ChainFuture fut = new ChainFuture<>(this, doneCb, null);
+    @Override public <T> IgniteInternalFuture<T> chain(
+        IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb
+    ) {
+        ChainFuture<R, T> fut = new ChainFuture<>(this, doneCb, null);
 
         if (ignoreInterrupts)
             fut.ignoreInterrupts();
@@ -366,9 +369,11 @@ public class GridFutureAdapter<R> implements 
IgniteInternalFuture<R> {
     }
 
     /** {@inheritDoc} */
-    @Override public <T> IgniteInternalFuture<T> chain(final IgniteClosure<? 
super IgniteInternalFuture<R>, T> doneCb,
-        Executor exec) {
-        ChainFuture fut = new ChainFuture<>(this, doneCb, exec);
+    @Override public <T> IgniteInternalFuture<T> chain(
+        IgniteClosure<? super IgniteInternalFuture<R>, T> doneCb,
+        Executor exec
+    ) {
+        ChainFuture<R, T> fut = new ChainFuture<>(this, doneCb, exec);
 
         if (ignoreInterrupts)
             fut.ignoreInterrupts();
@@ -388,6 +393,7 @@ public class GridFutureAdapter<R> implements 
IgniteInternalFuture<R> {
      *
      * @param lsnr Listener.
      */
+    @Async.Execute
     private void notifyListener(IgniteInClosure<? super 
IgniteInternalFuture<R>> lsnr) {
         assert lsnr != null;
 

Reply via email to