[ 
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}


> 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)

Reply via email to