Re: [jira] [Created] (IGNITE-12911) B+Tree Corrupted exception when using a key extracted from a value object --- and SQL enabled.
Folks, could you please take a look at this issue? It seems quite serious if we can potentially get B+Tree corrupted. Sincerely, Dmitriy Pavlov пт, 17 апр. 2020 г. в 19:25, Alexander Korenshteyn (Jira) : > Alexander Korenshteyn created IGNITE-12911: > -- > > Summary: B+Tree Corrupted exception when using a key > extracted from a value object --- and SQL enabled. > Key: IGNITE-12911 > URL: https://issues.apache.org/jira/browse/IGNITE-12911 > Project: Ignite > Issue Type: Bug > Components: cache, sql > Reporter: Alexander Korenshteyn > Attachments: Employee.java, EmployeeId.java, ServerNode.java > > If a key is part of the value like so: > class key \{ ... } > > class value { > private Key key > getKey() > } > > cache = ignite.cache()*.withKeepBinary()* > > the following scenario yields a B+ Tree exception: > > 1. *Enable SQL via annotations or QueryEntities.* > > key1= new Key() > value1 = new Value(key1) > > cache.put(key1, value1) > > BinaryObject val2 = cache.get(key1) > BinaryObject key2 = val2.field("key") > > *cache.put(key2, emp1); // CRASH!!! CorruptedTreeException: B+Tree > iscorrupted ...* > > user list: > [ > http://apache-ignite-users.70518.x6.nabble.com/Ignite-crashes-with-CorruptedTreeException-quot-B-Tree-is-corrupted-quot-on-a-composite-BinaryObjecto-tc32032.html > ] > > *Reproducer – attached* > > > > Exception: > > [2020-04-17 11:24:33,475][ERROR][main][root] Critical system error > detected. Will be handled accordingly to configured handler > [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, > super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet > [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], > failureCtx=FailureContext [type=CRITICAL_ERROR, err=class > o.a.i.i.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is > corrupted [pages(groupId, pageId)=[IgniteBiTuple [val1=1258113742, > val2=844420635164673]], cacheId=1976096430, cacheName=EMPLOYEE, > indexName=_key_PK, msg=Runtime failure on row: Row@2233cac0[ key: > model.EmployeeId [idHash=1744523301, hash=674030145, > employeeNumber=65348765, departmentNumber=123], val: model.Employee > [idHash=382762227, hash=1627745429, firstName=John, lastName=Smith, > id=model.EmployeeId [idHash=2021540695, hash=674030145, > employeeNumber=65348765, departmentNumber=123]] ][ John, Smith > > class > org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException: > B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple > [val1=1258113742, val2=844420635164673]], cacheId=1976096430, > cacheName=EMPLOYEE, indexName=_key_PK, msg=Runtime failure on row: > Row@2233cac0[ key: model.EmployeeId [idHash=1744523301, hash=674030145, > employeeNumber=65348765, departmentNumber=123], val: model.Employee > [idHash=382762227, hash=1627745429, firstName=John, lastName=Smith, > id=model.EmployeeId [idHash=2021540695, hash=674030145, > employeeNumber=65348765, departmentNumber=123]] ][ John, Smith ]] > > at > org.apache.ignite.internal.processors.query.h2.database.H2Tree.corruptedTreeException(H2Tree.java:836) > > at > org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2447) > > at > org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putx(BPlusTree.java:2394) > > at > org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.putx(H2TreeIndex.java:437) > > at > org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:756) > > at > org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:363) > > at > org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2016) > > at > org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:401) > > at > org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:2555) > > at > org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1664) > > at > org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639) > > at > org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436) > > at > org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311) > > at > org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2593) > > at > org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2053) > > at >
[jira] [Created] (IGNITE-12911) B+Tree Corrupted exception when using a key extracted from a value object --- and SQL enabled.
Alexander Korenshteyn created IGNITE-12911: -- Summary: B+Tree Corrupted exception when using a key extracted from a value object --- and SQL enabled. Key: IGNITE-12911 URL: https://issues.apache.org/jira/browse/IGNITE-12911 Project: Ignite Issue Type: Bug Components: cache, sql Reporter: Alexander Korenshteyn Attachments: Employee.java, EmployeeId.java, ServerNode.java If a key is part of the value like so: class key \{ ... } class value { private Key key getKey() } cache = ignite.cache()*.withKeepBinary()* the following scenario yields a B+ Tree exception: 1. *Enable SQL via annotations or QueryEntities.* key1= new Key() value1 = new Value(key1) cache.put(key1, value1) BinaryObject val2 = cache.get(key1) BinaryObject key2 = val2.field("key") *cache.put(key2, emp1); // CRASH!!! CorruptedTreeException: B+Tree iscorrupted ...* user list: [http://apache-ignite-users.70518.x6.nabble.com/Ignite-crashes-with-CorruptedTreeException-quot-B-Tree-is-corrupted-quot-on-a-composite-BinaryObjecto-tc32032.html] *Reproducer – attached* Exception: [2020-04-17 11:24:33,475][ERROR][main][root] Critical system error detected. Will be handled accordingly to configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext [type=CRITICAL_ERROR, err=class o.a.i.i.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple [val1=1258113742, val2=844420635164673]], cacheId=1976096430, cacheName=EMPLOYEE, indexName=_key_PK, msg=Runtime failure on row: Row@2233cac0[ key: model.EmployeeId [idHash=1744523301, hash=674030145, employeeNumber=65348765, departmentNumber=123], val: model.Employee [idHash=382762227, hash=1627745429, firstName=John, lastName=Smith, id=model.EmployeeId [idHash=2021540695, hash=674030145, employeeNumber=65348765, departmentNumber=123]] ][ John, Smith class org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple [val1=1258113742, val2=844420635164673]], cacheId=1976096430, cacheName=EMPLOYEE, indexName=_key_PK, msg=Runtime failure on row: Row@2233cac0[ key: model.EmployeeId [idHash=1744523301, hash=674030145, employeeNumber=65348765, departmentNumber=123], val: model.Employee [idHash=382762227, hash=1627745429, firstName=John, lastName=Smith, id=model.EmployeeId [idHash=2021540695, hash=674030145, employeeNumber=65348765, departmentNumber=123]] ][ John, Smith ]] at org.apache.ignite.internal.processors.query.h2.database.H2Tree.corruptedTreeException(H2Tree.java:836) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2447) at org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putx(BPlusTree.java:2394) at org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.putx(H2TreeIndex.java:437) at org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:756) at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:363) at org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2016) at org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:401) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:2555) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1664) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639) at org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436) at org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311) at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2593) at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2053) at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1871) at org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1685) at