This is an automated email from the ASF dual-hosted git repository. dgovorukhin pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new e3dbc8f IGNITE-10907 Fix IgniteUtilsSelfTest.testDoInParallelWithStealingJobRunTaskInExecutor flaky in PDS Basic 1 e3dbc8f is described below commit e3dbc8f32a39fee5190ba59d43398cd0724b6a8f Author: Dmitriy Govorukhin <dmitriy.govoruk...@gmail.com> AuthorDate: Tue Dec 25 14:01:50 2018 +0300 IGNITE-10907 Fix IgniteUtilsSelfTest.testDoInParallelWithStealingJobRunTaskInExecutor flaky in PDS Basic 1 --- .../ignite/internal/util/IgniteUtilsSelfTest.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java index 93b7586..757e40a 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java @@ -62,6 +62,7 @@ import org.apache.ignite.compute.ComputeJob; import org.apache.ignite.compute.ComputeJobAdapter; import org.apache.ignite.internal.IgniteInterruptedCheckedException; import org.apache.ignite.internal.processors.igfs.IgfsUtils; +import org.apache.ignite.internal.util.future.GridFutureAdapter; import org.apache.ignite.internal.util.lang.GridPeerDeployAware; import org.apache.ignite.internal.util.lang.IgniteThrowableConsumer; import org.apache.ignite.internal.util.typedef.F; @@ -1095,14 +1096,31 @@ public class IgniteUtilsSelfTest extends GridCommonAbstractTest { Collection<Integer> res; + // Future for avoiding fast execution in only executor threads. + // Here we try to pass a number of tasks more that executor size, + // but there is a case when all task will be completed after last submit return control and + // current thread can not steal task because all task will be already finished. + GridFutureAdapter fut = new GridFutureAdapter(); + try { res = U.doInParallel(10, executorService, data, new IgniteThrowableConsumer<Integer, Integer>() { @Override public Integer accept(Integer cnt) { - if (Thread.currentThread().getId() == threadId) + if (Thread.currentThread().getId() == threadId) { + fut.onDone(); + curThreadCnt.incrementAndGet(); + } + else { + try { + fut.get(); + } + catch (IgniteCheckedException e) { + throw U.convertException(e); + } + } return -cnt; }