Ilya Shishkov created IGNITE-15769:
--------------------------------------

             Summary: IgniteToIgniteCdcConsumer fails on complex keys
                 Key: IGNITE-15769
                 URL: https://issues.apache.org/jira/browse/IGNITE-15769
             Project: Ignite
          Issue Type: Bug
            Reporter: Ilya Shishkov
         Attachments: CdcFailureOnComplexKey.patch

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:
# 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)
        at
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to