[ https://issues.apache.org/jira/browse/IGNITE-15769?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilya Shishkov updated IGNITE-15769: ----------------------------------- Description: In case if complex key is used (i.e. custom class or composite primary key in terms of SQL), when data isto put in cache, below error occurs in IgniteToIgniteCdcStreamer which streams data from updated datacenter: {code} [18:46:36,757][SEVERE][Thread-1][] Cdc error class org.apache.ignite.IgniteException: Transaction has been rolled back: 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 at org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:138) at org.apache.ignite.internal.cdc.WalRecordsConsumer.onRecords(WalRecordsConsumer.java:157) at org.apache.ignite.internal.cdc.CdcMain.consumeSegment(CdcMain.java:472) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373) at java.util.ArrayList.forEach(ArrayList.java:1257) at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:390) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.apache.ignite.internal.cdc.CdcMain.consumeWalSegmentsUntilStopped(CdcMain.java:403) at org.apache.ignite.internal.cdc.CdcMain.runX(CdcMain.java:285) at org.apache.ignite.internal.cdc.CdcMain.run(CdcMain.java:229) at java.lang.Thread.run(Thread.java:748) Caused by: class org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: Transaction has been rolled back: 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4385) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAllConflict(GridCacheAdapter.java:2606) at org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.putAllConflict(GridCacheProxyImpl.java:565) at org.apache.ignite.cdc.CdcEventsApplier.applyIf(CdcEventsApplier.java:151) at org.apache.ignite.cdc.CdcEventsApplier.apply(CdcEventsApplier.java:126) at org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:119) ... 20 more Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary object class [type=class org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) at org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateProps(QueryTypeDescriptorImpl.java:615) at org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateKeyAndValue(QueryTypeDescriptorImpl.java:587) at org.apache.ignite.internal.processors.query.GridQueryProcessor.validateKeyAndValue(GridQueryProcessor.java:3685) at org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1883) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWriteEntry(GridNearTxLocal.java:1550) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWrite(GridNearTxLocal.java:1278) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllAsync0(GridNearTxLocal.java:927) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllDrAsync(GridNearTxLocal.java:553) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$23.inOp(GridCacheAdapter.java:2608) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$SyncInOp.op(GridCacheAdapter.java:5641) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4366) ... 25 more {code} Here is a problem reproducer (should be applied to master of ignite-extensions): [^CdcFailureOnComplexKey.patch] There are 3 test failures (total amount of test - 4): # Cache create via DDL with not null fields in key. # Cache create via DDL without not null-fields in key (stracktrace differs from above failure). # Cache create vie IgniteCache API + QueryEntity + index in key class (QueryEntity#setIndexes). One test does not fail: cache create via IgniteCache API + QueryEntity, but without indexes in key. In all failure cases below error is present in stack trace: {code} Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary object class [type=class org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) {code} was: In case if complex key is used (i.e. custom class or composite primary key in terms of SQL), when data is put in cache, below error occurs in IgniteToIgniteCdcStreamer: {code} [18:46:36,757][SEVERE][Thread-1][] Cdc error class org.apache.ignite.IgniteException: Transaction has been rolled back: 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 at org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:138) at org.apache.ignite.internal.cdc.WalRecordsConsumer.onRecords(WalRecordsConsumer.java:157) at org.apache.ignite.internal.cdc.CdcMain.consumeSegment(CdcMain.java:472) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373) at java.util.ArrayList.forEach(ArrayList.java:1257) at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:390) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.Sink$ChainedReference.end(Sink.java:258) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) at org.apache.ignite.internal.cdc.CdcMain.consumeWalSegmentsUntilStopped(CdcMain.java:403) at org.apache.ignite.internal.cdc.CdcMain.runX(CdcMain.java:285) at org.apache.ignite.internal.cdc.CdcMain.run(CdcMain.java:229) at java.lang.Thread.run(Thread.java:748) Caused by: class org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: Transaction has been rolled back: 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4385) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAllConflict(GridCacheAdapter.java:2606) at org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.putAllConflict(GridCacheProxyImpl.java:565) at org.apache.ignite.cdc.CdcEventsApplier.applyIf(CdcEventsApplier.java:151) at org.apache.ignite.cdc.CdcEventsApplier.apply(CdcEventsApplier.java:126) at org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:119) ... 20 more Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary object class [type=class org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) at org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateProps(QueryTypeDescriptorImpl.java:615) at org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateKeyAndValue(QueryTypeDescriptorImpl.java:587) at org.apache.ignite.internal.processors.query.GridQueryProcessor.validateKeyAndValue(GridQueryProcessor.java:3685) at org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1883) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWriteEntry(GridNearTxLocal.java:1550) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWrite(GridNearTxLocal.java:1278) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllAsync0(GridNearTxLocal.java:927) at org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllDrAsync(GridNearTxLocal.java:553) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$23.inOp(GridCacheAdapter.java:2608) at org.apache.ignite.internal.processors.cache.GridCacheAdapter$SyncInOp.op(GridCacheAdapter.java:5641) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4366) ... 25 more {code} Here is a problem reproducer (should be applied to master of ignite-extensions): [^CdcFailureOnComplexKey.patch] There are 3 test failures (total amount of test - 4): # Cache create via DDL with not null fields in key. # Cache create via DDL without not null-fields in key (stracktrace differs from above failure). # Cache create vie IgniteCache API + QueryEntity + index in key class (QueryEntity#setIndexes). One test does not fail: cache create via IgniteCache API + QueryEntity, but without indexes in key. In all failure cases below error is present in stack trace: {code} Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary object class [type=class org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] at org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) {code} > IgniteToIgniteCdcStreamer fails on complex keys > ----------------------------------------------- > > Key: IGNITE-15769 > URL: https://issues.apache.org/jira/browse/IGNITE-15769 > Project: Ignite > Issue Type: Bug > Reporter: Ilya Shishkov > Priority: Major > Attachments: CdcFailureOnComplexKey.patch > > > In case if complex key is used (i.e. custom class or composite primary key in > terms of SQL), when data isto put in cache, below error occurs in > IgniteToIgniteCdcStreamer which streams data from updated datacenter: > {code} > [18:46:36,757][SEVERE][Thread-1][] Cdc error > class org.apache.ignite.IgniteException: Transaction has been rolled back: > 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 > at > org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:138) > at > org.apache.ignite.internal.cdc.WalRecordsConsumer.onRecords(WalRecordsConsumer.java:157) > at > org.apache.ignite.internal.cdc.CdcMain.consumeSegment(CdcMain.java:472) > at > java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) > at > java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373) > at java.util.ArrayList.forEach(ArrayList.java:1257) > at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:390) > at java.util.stream.Sink$ChainedReference.end(Sink.java:258) > at java.util.stream.Sink$ChainedReference.end(Sink.java:258) > at java.util.stream.Sink$ChainedReference.end(Sink.java:258) > at java.util.stream.Sink$ChainedReference.end(Sink.java:258) > at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) > at > java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) > at > java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) > at > java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) > at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) > at > java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) > at > org.apache.ignite.internal.cdc.CdcMain.consumeWalSegmentsUntilStopped(CdcMain.java:403) > at org.apache.ignite.internal.cdc.CdcMain.runX(CdcMain.java:285) > at org.apache.ignite.internal.cdc.CdcMain.run(CdcMain.java:229) > at java.lang.Thread.run(Thread.java:748) > Caused by: class > org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: > Transaction has been rolled back: > 5b8c25a7c71-00000000-0ea3-dad8-0000-000000000002 > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4385) > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAllConflict(GridCacheAdapter.java:2606) > at > org.apache.ignite.internal.processors.cache.GridCacheProxyImpl.putAllConflict(GridCacheProxyImpl.java:565) > at > org.apache.ignite.cdc.CdcEventsApplier.applyIf(CdcEventsApplier.java:151) > at > org.apache.ignite.cdc.CdcEventsApplier.apply(CdcEventsApplier.java:126) > at > org.apache.ignite.cdc.IgniteToIgniteCdcStreamer.onEvents(IgniteToIgniteCdcStreamer.java:119) > ... 20 more > Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary > object class [type=class > org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] > at > org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) > at > org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateProps(QueryTypeDescriptorImpl.java:615) > at > org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateKeyAndValue(QueryTypeDescriptorImpl.java:587) > at > org.apache.ignite.internal.processors.query.GridQueryProcessor.validateKeyAndValue(GridQueryProcessor.java:3685) > at > org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1883) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWriteEntry(GridNearTxLocal.java:1550) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.enlistWrite(GridNearTxLocal.java:1278) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllAsync0(GridNearTxLocal.java:927) > at > org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAllDrAsync(GridNearTxLocal.java:553) > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter$23.inOp(GridCacheAdapter.java:2608) > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter$SyncInOp.op(GridCacheAdapter.java:5641) > at > org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4366) > ... 25 more > {code} > Here is a problem reproducer (should be applied to master of > ignite-extensions): [^CdcFailureOnComplexKey.patch] > There are 3 test failures (total amount of test - 4): > # Cache create via DDL with not null fields in key. > # Cache create via DDL without not null-fields in key (stracktrace differs > from above failure). > # Cache create vie IgniteCache API + QueryEntity + index in key class > (QueryEntity#setIndexes). > One test does not fail: cache create via IgniteCache API + QueryEntity, but > without indexes in key. > In all failure cases below error is present in stack trace: > {code} > Caused by: class org.apache.ignite.IgniteCheckedException: Unexpected binary > object class [type=class > org.apache.ignite.internal.processors.cache.KeyCacheObjectImpl] > at > org.apache.ignite.internal.processors.query.property.QueryBinaryProperty.value(QueryBinaryProperty.java:128) > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)