You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladislav Pyatkov (Jira)" <ji...@apache.org> on 2021/06/28 09:15:00 UTC

[jira] [Updated] (IGNITE-15017) Contention in lock on Compound future

     [ https://issues.apache.org/jira/browse/IGNITE-15017?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladislav Pyatkov updated IGNITE-15017:
---------------------------------------
    Description: 
During analyze of JFR I noticed that the threads waiting long time on getting compounds on the future.
It happened on an exclusive checkpoint phase and have a negative impact to transactions (they increased to a hundred milliseconds).
This stack held the checkpoint workers:
{noformat}
org.apache.ignite.internal.util.future.GridCompoundFuture.futuresCount() line: 358	2	0,036	272 938 246
   org.apache.ignite.internal.util.future.GridCompoundFuture.checkComplete() line: 282	2	0,036	272 938 246
      org.apache.ignite.internal.util.future.GridCompoundFuture.apply(IgniteInternalFuture) line: 142	2	0,036	272 938 246
         org.apache.ignite.internal.util.future.GridCompoundFuture.apply(Object) line: 43	2	0,036	272 938 246
            org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(IgniteInClosure) line: 407	2	0,036	272 938 246
               org.apache.ignite.internal.util.future.GridFutureAdapter.unblock(Object) line: 355	2	0,036	272 938 246
                  org.apache.ignite.internal.util.future.GridFutureAdapter.unblockAll(GridFutureAdapter$Node) line: 343	2	0,036	272 938 246
                     org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable, boolean) line: 520	2	0,036	272 938 246
                        org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable) line: 498	2	0,036	272 938 246
                           org.apache.ignite.internal.util.future.GridFutureAdapter.onDone() line: 464	2	0,036	272 938 246
                              org.apache.ignite.internal.util.IgniteUtils.lambda$wrapIgniteFuture$3(Runnable, GridFutureAdapter) line: 11730	2	0,036	272 938 246
                                 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1149	2	0,036	272 938 246
                                    java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 624	2	0,036	272 938 246
                                       java.lang.Thread.run() line: 748	2	0,036	272 938 246
{noformat}

You can see that the method {{checkComplete}} was freezed on 272 938 246 microseconds in two times invocations.

  was:
During analyze of JFR I noticed that the threads waiting long time on getting compounds on the future.
It happened on an exclusive checkpoint phase and have a negative impact to transactions (they increased to a hundred milliseconds).
This stack held the checkpoint workers:
{noformat}
org.apache.ignite.internal.util.future.GridCompoundFuture.futuresCount() line: 358	2	0,036	272 938 246
   org.apache.ignite.internal.util.future.GridCompoundFuture.checkComplete() line: 282	2	0,036	272 938 246
      org.apache.ignite.internal.util.future.GridCompoundFuture.apply(IgniteInternalFuture) line: 142	2	0,036	272 938 246
         org.apache.ignite.internal.util.future.GridCompoundFuture.apply(Object) line: 43	2	0,036	272 938 246
            org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(IgniteInClosure) line: 407	2	0,036	272 938 246
               org.apache.ignite.internal.util.future.GridFutureAdapter.unblock(Object) line: 355	2	0,036	272 938 246
                  org.apache.ignite.internal.util.future.GridFutureAdapter.unblockAll(GridFutureAdapter$Node) line: 343	2	0,036	272 938 246
                     org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable, boolean) line: 520	2	0,036	272 938 246
                        org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable) line: 498	2	0,036	272 938 246
                           org.apache.ignite.internal.util.future.GridFutureAdapter.onDone() line: 464	2	0,036	272 938 246
                              org.apache.ignite.internal.util.IgniteUtils.lambda$wrapIgniteFuture$3(Runnable, GridFutureAdapter) line: 11730	2	0,036	272 938 246
                                 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1149	2	0,036	272 938 246
                                    java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 624	2	0,036	272 938 246
                                       java.lang.Thread.run() line: 748	2	0,036	272 938 246
{noformat}

You can see that the method `checkComplete` was freezed on 272 938 246 microseconds in two times invocations.


> Contention in lock on Compound future
> -------------------------------------
>
>                 Key: IGNITE-15017
>                 URL: https://issues.apache.org/jira/browse/IGNITE-15017
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>
> During analyze of JFR I noticed that the threads waiting long time on getting compounds on the future.
> It happened on an exclusive checkpoint phase and have a negative impact to transactions (they increased to a hundred milliseconds).
> This stack held the checkpoint workers:
> {noformat}
> org.apache.ignite.internal.util.future.GridCompoundFuture.futuresCount() line: 358	2	0,036	272 938 246
>    org.apache.ignite.internal.util.future.GridCompoundFuture.checkComplete() line: 282	2	0,036	272 938 246
>       org.apache.ignite.internal.util.future.GridCompoundFuture.apply(IgniteInternalFuture) line: 142	2	0,036	272 938 246
>          org.apache.ignite.internal.util.future.GridCompoundFuture.apply(Object) line: 43	2	0,036	272 938 246
>             org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(IgniteInClosure) line: 407	2	0,036	272 938 246
>                org.apache.ignite.internal.util.future.GridFutureAdapter.unblock(Object) line: 355	2	0,036	272 938 246
>                   org.apache.ignite.internal.util.future.GridFutureAdapter.unblockAll(GridFutureAdapter$Node) line: 343	2	0,036	272 938 246
>                      org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable, boolean) line: 520	2	0,036	272 938 246
>                         org.apache.ignite.internal.util.future.GridFutureAdapter.onDone(Object, Throwable) line: 498	2	0,036	272 938 246
>                            org.apache.ignite.internal.util.future.GridFutureAdapter.onDone() line: 464	2	0,036	272 938 246
>                               org.apache.ignite.internal.util.IgniteUtils.lambda$wrapIgniteFuture$3(Runnable, GridFutureAdapter) line: 11730	2	0,036	272 938 246
>                                  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1149	2	0,036	272 938 246
>                                     java.util.concurrent.ThreadPoolExecutor$Worker.run() line: 624	2	0,036	272 938 246
>                                        java.lang.Thread.run() line: 748	2	0,036	272 938 246
> {noformat}
> You can see that the method {{checkComplete}} was freezed on 272 938 246 microseconds in two times invocations.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)