You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Tomasz Grygo (Jira)" <ji...@apache.org> on 2020/05/29 13:14:00 UTC
[jira] [Updated] (IGNITE-13092) ConcurrentModificationException
when adding items to cache
[ https://issues.apache.org/jira/browse/IGNITE-13092?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tomasz Grygo updated IGNITE-13092:
----------------------------------
Attachment: ignite.xml
Environment:
Java 1.8.0_231
Apache Ignite 2.8.1
Windows 10, 64G memory
Java params:
{{-Xms1024m }}{{-Xmx50g }}{{-Xss1024m}}
{{-Xverify:none}}
{{-server}}
{{-DIGNITE_QUIET=true}}
{{-XX:+UseG1GC}}
{{-XX:+DisableExplicitGC}}
{{-Djava.net.preferIPv4Stack=true}}
{{-XX:+AlwaysPreTouch}}
{{-XX:+ScavengeBeforeFullGC}}
{{-XX:+AggressiveOpts}}
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-log4j2</artifactId>
<version>${ignite.version}</version>
</dependency>
was:
Java 1.8.0_231
Apache Ignite 2.8.1
Windows 10, 64G memory
Java params:
{{-Xms1024m }}{{-Xmx50g }}{{-Xss1024m}}
{{-Xverify:none}}
{{-server}}
{{-DIGNITE_QUIET=true}}
{{-XX:+UseG1GC}}
{{-XX:+DisableExplicitGC}}
{{-Djava.net.preferIPv4Stack=true}}
{{-XX:+AlwaysPreTouch}}
{{-XX:+ScavengeBeforeFullGC}}
{{-XX:+AggressiveOpts}}
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-log4j2</artifactId>
<version>${ignite.version}</version>
</dependency>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="gridLogger">
<bean class="org.apache.ignite.logger.log4j2.Log4J2Logger">
<constructor-arg type="java.lang.String" value="log4j2.xml"/>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<!-- Override local port. -->
<property name="localPort" value="47400"/>
</bean>
</property>
<!-- Configure internal thread pool. 64-->
<property name="publicThreadPoolSize" value="16"/>
<!-- Configure system thread pool. 32-->
<property name="systemThreadPoolSize" value="8"/>
<property name="systemWorkerBlockedTimeout" value="#{5 * 60 * 1000}"/>
<property name="failureHandler">
<bean class="org.apache.ignite.failure.StopNodeFailureHandler">
<!-- uncomment to enable this handler to
process critical workers' hung-ups -->
<property name="ignoredFailureTypes">
<list>
</list>
</property>
</bean>
</property>
<!-- Set to true to enable distributed class loading for examples, default is false. -->
<property name="peerClassLoadingEnabled" value="false"/>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<!--
Sets a path to the root directory where data and indexes are
to be persisted. It's assumed the directory is on a separated SSD.
-->
<property name="storagePath" value="persistence"/>
<!--
Sets a path to the directory where WAL is stored.
It's assumed the directory is on a separated HDD.
-->
<property name="walPath" value="wal"/>
<!--
Sets a path to the directory where WAL archive is stored.
The directory is on the same HDD as the WAL.
-->
<property name="walArchivePath" value="wal/archive"/>
<!-- Changing WAL Mode. -->
<property name="walMode" value="NONE"/>
<!-- Set the page size to 4 KB, default -->
<!-- limit 1 KB - 16 KB -->
<property name="pageSize" value="#{4 * 1024}"/>
<!-- Enable write throttling. -->
<property name="writeThrottlingEnabled" value="false"/>
<property name="checkpointFrequency" value="500"/>
<property name="lockWaitTime" value="2000"/>
<property name="checkpointThreads" value="1"/>
<property name="checkpointWriteOrder" value="RANDOM"/>
<!--
Default memory region that grows endlessly. A cache is bound to this memory region
unless it sets another one in its CacheConfiguration.
-->
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<!--property name="name" value="Default_Region"/-->
<property name="name" value="default"/>
<!-- 100 MB memory region with disabled eviction -->
<property name="initialSize" value="#{100L * 1024 * 1024}"/>
<!-- maxSize 20 MB is too little -->
<!-- sum of all maxSize values has to be less than total memory of the system -->
<!-- limits size in memory, not on disk -->
<!-- default value 1.2GB -->
<property name="maxSize" value="#{2L * 1024 * 1024 * 1024}"/>
<property name="persistenceEnabled" value="true"/>
<!-- Increasing the buffer size to 1 GB. -->
<property name="checkpointPageBufferSize" value="#{1L * 1024 * 1024 * 1024}"/>
</bean>
</property>
<!-- Defining several data regions for different memory regions -->
<property name="dataRegionConfigurations">
<list>
</list>
</property>
</bean>
</property>
<property name="cacheConfiguration">
<list>
<!--bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="dataRegionName" value="default"/>
<property name="name" value=".ShardDetectorStorage"/>
<property name="onheapCacheEnabled" value="true"/>
</bean>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="dataRegionName" value="default"/>
<property name="name" value=".ChildrenStore"/>
<property name="onheapCacheEnabled" value="true"/>
</bean>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="dataRegionName" value="default"/>
<property name="name" value=".ChildrenStore.listsize"/>
<property name="onheapCacheEnabled" value="true"/>
</bean>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="dataRegionName" value="default"/>
<property name="name" value=".RootStorage"/>
<property name="onheapCacheEnabled" value="true"/>
</bean>
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="dataRegionName" value="default"/>
<property name="name" value=".QualifierStorage"/>
<property name="onheapCacheEnabled" value="true"/>
</bean-->
</list>
</property>
</bean>
</beans>
> ConcurrentModificationException when adding items to cache
> ----------------------------------------------------------
>
> Key: IGNITE-13092
> URL: https://issues.apache.org/jira/browse/IGNITE-13092
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 2.8.1
> Environment: Java 1.8.0_231
> Apache Ignite 2.8.1
> Windows 10, 64G memory
> Java params:
> {{-Xms1024m }}{{-Xmx50g }}{{-Xss1024m}}
> {{-Xverify:none}}
> {{-server}}
> {{-DIGNITE_QUIET=true}}
> {{-XX:+UseG1GC}}
> {{-XX:+DisableExplicitGC}}
> {{-Djava.net.preferIPv4Stack=true}}
> {{-XX:+AlwaysPreTouch}}
> {{-XX:+ScavengeBeforeFullGC}}
> {{-XX:+AggressiveOpts}}
> <dependency>
> <groupId>org.apache.ignite</groupId>
> <artifactId>ignite-core</artifactId>
> <version>${ignite.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.ignite</groupId>
> <artifactId>ignite-spring</artifactId>
> <version>${ignite.version}</version>
> </dependency>
> <dependency>
> <groupId>org.apache.ignite</groupId>
> <artifactId>ignite-log4j2</artifactId>
> <version>${ignite.version}</version>
> </dependency>
> Reporter: Tomasz Grygo
> Priority: Blocker
> Attachments: ignite.xml
>
>
> Ignite fails when adding items to cache with multiple concurrent threads. Cache is persistent, with no eviction and no WAL. There is no Ignite cluster, just one machine.
> 2020-05-27 23:29:13,177 [Storage0 ] [ERROR] - <.ChildrenStore> Unexpected exception during cache update
> java.util.ConcurrentModificationException
> at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1211)
> at java.util.TreeMap$EntryIterator.next(TreeMap.java:1247)
> at java.util.TreeMap$EntryIterator.next(TreeMap.java:1242)
> at java.util.AbstractMap.toString(AbstractMap.java:554)
> at java.lang.String.valueOf(String.java:2994)
> at java.lang.StringBuilder.append(StringBuilder.java:131)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryPartitionRecovery.collectEntries(CacheContinuousQueryPartitionRecovery.java:261)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.handleEvent(CacheContinuousQueryHandler.java:973)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.onEntryUpdate(CacheContinuousQueryHandler.java:1019)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.access$600(CacheContinuousQueryHandler.java:90)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler$2.onEntryUpdated(CacheContinuousQueryHandler.java:445)
> at org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager.onEntryUpdated(CacheContinuousQueryManager.java:443)
> at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2489)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2641)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2102)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1919)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1719)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.sendSingleRequest(GridNearAtomicAbstractUpdateFuture.java:300)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:486)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:446)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:249)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1164)
> at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:624)
> at org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2580)
> at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putIfAbsent(GridCacheAdapter.java:3007)
> at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.putIfAbsent(IgniteCacheProxyImpl.java:1395)
> at org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.putIfAbsent(GatewayProtectedCacheProxy.java:928)
> at com.sc.extr.cache.PureIgniteDynamicSetStorage.addItem(PureIgniteDynamicSetStorage.java:96)
> at com.sc.extr.cache.SetStorageBase.addItem(SetStorageBase.java:44)
> at com.sc.extr.tree.childrenstore.ChildrenStoreBaseKV.addItem(ChildrenStoreBaseKV.java:30)
> at com.sc.extr.tree.childrenstore.ChildrenStoreInPureIgnite.add(ChildrenStoreInPureIgnite.java:59)
> at com.sc.extr.tree.ShardChildren.addChild(ShardChildren.java:46)
> at com.sc.extr.tree.SkinnyTreeBuilder.shardChild(SkinnyTreeBuilder.java:121)
> at com.sc.extr.tree.SkinnyTreeBuilder.parentFwd(SkinnyTreeBuilder.java:162)
> at com.sc.extr.tree.SkinnyTreeBuilder.addRow(SkinnyTreeBuilder.java:277)
> at com.sc.extr.tree.MultiCacheTreeBuilder.process(MultiCacheTreeBuilder.java:204)
> at com.sc.bi.workflow.WorkTransformer.processOne(WorkTransformer.java:84)
> at com.sc.bi.workflow.WorkTransformer.doWork(WorkTransformer.java:145)
> at com.sc.bi.workflow.WorkTransformer.processQueue(WorkTransformer.java:210)
> at com.sc.bi.workflow.WorkTransformer.run(WorkTransformer.java:169)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)