[ 
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)

Reply via email to