[ https://issues.apache.org/jira/browse/IGNITE-13092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17119404#comment-17119404 ]
Roman Kondakov commented on IGNITE-13092: ----------------------------------------- Please, checkĀ [https://apacheignite.readme.io/docs/logging#default-logging]. I think you need to try to change the logging configuration in {{$IGNITE_HOME/config/}}. Just try to set at least {{INFO}} debug level in the next configuration files: * ignite-log4j.xml * ignite-log4j2.xml * java.util.logging.properties I believe changing the log level in one of this files (depends on the logger type used) might help you to work the problem around. > 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> > <?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> > Reporter: Tomasz Grygo > Priority: Blocker > > 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)