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;
