Mikhail Cherkasov created IGNITE-7442:
-----------------------------------------
Summary: Data load hangs with SQL on-heap cache enabled
Key: IGNITE-7442
URL: https://issues.apache.org/jira/browse/IGNITE-7442
Project: Ignite
Issue Type: Bug
Components: sql
Affects Versions: 2.4
Reporter: Mikhail Cherkasov
Assignee: Vladimir Ozerov
Fix For: 2.5
The user uses putAll to load data into a cache, it loads data to Atomic cache
and all keys have unique values, so there can not be a deadlock due to key
order, but to be 200% sure about this, the user also uses TreeMap.
In logs I can see 68 messages about pool starvation for the same thread:
at o.a.i.i.processors.query.h2.database.H2Tree.compare(H2Tree.java:206)
at o.a.i.i.processors.query.h2.database.H2Tree.compare(H2Tree.java:44)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.compare(BPlusTree.java:4359)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.findInsertionPoint(BPlusTree.java:4279)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.access$1500(BPlusTree.java:81)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree$Search.run0(BPlusTree.java:261)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:4697)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree$GetPageHandler.run(BPlusTree.java:4682)
at
o.a.i.i.processors.cache.persistence.tree.util.PageHandler.readPage(PageHandler.java:158)
at
o.a.i.i.processors.cache.persistence.DataStructure.read(DataStructure.java:319)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2254)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.putDown(BPlusTree.java:2266)
at
o.a.i.i.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2006)
at o.a.i.i.processors.cache.persistence.tree.BPlusTree.put(BPlusTree.java:1977)
at o.a.i.i.processors.query.h2.database.H2TreeIndex.put(H2TreeIndex.java:220)
at o.a.i.i.processors.query.h2.opt.GridH2Table.addToIndex(GridH2Table.java:568)
at o.a.i.i.processors.query.h2.opt.GridH2Table.doUpdate(GridH2Table.java:516)
at o.a.i.i.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:425)
at o.a.i.i.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:566)
at
o.a.i.i.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:1731)
at
o.a.i.i.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:418)
at
o.a.i.i.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:1363)
at
o.a.i.i.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1218)
at
o.a.i.i.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:352)
at
o.a.i.i.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:1693)
at
o.a.i.i.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3222)
A completed number always is the same:
Completed: 1826527
and furthermore, thread always has a runnable state. So it's in a runnable
state for 30 minutes.
So looks like it was looping somewhere inside:
o.a.i.i.processors.cache.persistence.tree.BPlusTree.putDown
method.
The issue can be reproduced only with SQL on heap cache enabled.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)