I'm seeing our integration tests hang.  The cause is something in
Random2LruPageEvictionTracker, i'm able to reproduce this 100% of time on
many different laptops and in our ci/cd.  I was able to work around this by
disabling PageEviction in our Default Data Region during the tests.  I don't
see this in our production clusters.

Does anyone have an idea of how i can fix it without disabling eviction?

I'm using Ignite 2.8.0.

One thing to note is that I'm not sure what to make of the line
Random2LruPageEvictionTracker.evictDataPage(Random2LruPageEvictionTracker.java:152),
but it seemed to simply loop forever when stepping through it in my IDE.

Stack Trace:
"Test worker" #22 prio=5 os_prio=31 cpu=299703.41ms elapsed=317.18s
tid=0x00007ff3cfc8c800 nid=0x7203 runnable  [0x0000700005b38000]  
java.lang.Thread.State: RUNNABLE        at
org.apache.ignite.internal.processors.cache.persistence.evict.Random2LruPageEvictionTracker.evictDataPage(Random2LruPageEvictionTracker.java:152)
       
at
org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.ensureFreeSpace(IgniteCacheDatabaseSharedManager.java:1086)
       
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.ensureFreeSpace(GridCacheMapEntry.java:4513)
       
at
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerSet(GridCacheMapEntry.java:1461)
       
at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter.userCommit(IgniteTxLocalAdapter.java:745)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.localFinish(GridNearTxLocal.java:3850)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishFuture.doFinish(GridNearTxFinishFuture.java:440)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishFuture.finish(GridNearTxFinishFuture.java:390)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$25.apply(GridNearTxLocal.java:4129)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal$25.apply(GridNearTxLocal.java:4118)
       
at
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
       
at
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commitNearTxLocalAsync(GridNearTxLocal.java:4118)
       
at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commit(GridNearTxLocal.java:4086)
       
at
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor$4.applyx(DataStructuresProcessor.java:587)
       
at
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor$4.applyx(DataStructuresProcessor.java:556)
       
at
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.retryTopologySafe(DataStructuresProcessor.java:1664)
       
at
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.getAtomic(DataStructuresProcessor.java:556)
       
at
org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.reentrantLock(DataStructuresProcessor.java:1361)
       
at
org.apache.ignite.internal.IgniteKernal.reentrantLock(IgniteKernal.java:4136)   
    
at jdk.internal.reflect.GeneratedMethodAccessor713.invoke(Unknown Source)       
at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43)
       
at java.lang.reflect.Method.invoke([email protected]/Method.java:566)       
at com.example.ignite.IgniteInitializer$1.invoke(IgniteInitializer.java:158)    
   
at com.sun.proxy.$Proxy205.reentrantLock(Unknown Source)        at
com.example.data.store.jdbc.cache.CacheService.getCount(CacheService.java:47)   
    
at
com.example.data.store.jdbc.cache.CacheService$$FastClassBySpringCGLIB$$7efa9131.invoke()......


Configuration: I tried different permutations, the only thing that worked
was disabling eviction.  I also tried LRU instead of LRU_2 but that didn't
work either.
        @Bean   public IgniteConfiguration igniteConfiguration(         
@Value("#{'${IGNITE_HOME:}' ?: systemProperties['java.io.tmpdir']}") String
igniteHome,                     SymphonyIgniteProperties 
symphonyIgniteProperties,                      Optional
dataStorageConfiguration, TcpDiscoverySpi tcpDiscoverySpi) {    
IgniteConfiguration cfg = new IgniteConfiguration();    
cfg.setIgniteInstanceName(symphonyIgniteProperties.getIgniteInstanceName());    
dataStorageConfiguration.ifPresent(dss ->
cfg.setDataStorageConfiguration(dss));          cfg.setIgniteHome(igniteHome);  
cfg.setPeerClassLoadingEnabled(true);           cfg.setIncludeEventTypes(new 
int[] {
EVT_CACHE_STARTED });   
System.setProperty(IgniteSystemProperties.IGNITE_QUIET, "true");        
System.setProperty(IgniteSystemProperties.IGNITE_UPDATE_NOTIFIER, "false");     
cfg.setGridLogger(new Slf4jLogger());           
cfg.setDiscoverySpi(tcpDiscoverySpi);   
cfg.setCommunicationSpi(new StandaloneNoopCommunicationSpi());  
cfg.setClientMode(false);               cfg.setDataStreamerThreadPoolSize(2);   
cfg.setPublicThreadPoolSize(2);         cfg.setSystemThreadPoolSize(2); 
cfg.setStripedPoolSize(2);              cfg.setIgfsThreadPoolSize(2);   
cfg.setManagementThreadPoolSize(2);             
cfg.setServiceThreadPoolSize(2);        
cfg.setQueryThreadPoolSize(2);          
cfg.setPeerClassLoadingThreadPoolSize(2);       
// setting ConnectorConfiguration to null removes these thread pools:           
//
"grid-nio-worker-tcp-rest-x", "nio-acceptor-tcp-rest-#18%%"             // and
"session-timeout-worker-#13%%"          cfg.setConnectorConfiguration(null);    
cfg.setClientConnectorConfiguration(null);      
cfg.setRebalanceThreadPoolSize(1);              return cfg;     }




--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to