You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Sergey Korotkov (Jira)" <ji...@apache.org> on 2023/10/05 10:05:00 UTC

[jira] (IGNITE-20572) AssertionError in CDC on metadata deserialize

    [ https://issues.apache.org/jira/browse/IGNITE-20572 ]


    Sergey Korotkov deleted comment on IGNITE-20572:
    ------------------------------------------

was (Author: JIRAUSER279895):
Possible solution would be say to change the BinaryMetadataFileStore.writeMetadata  to create file atomically. 

The same way as in the MarshallerMappingFileStore.writeMapping using the ATOMIC_MOVE.

> AssertionError in CDC on metadata deserialize
> ---------------------------------------------
>
>                 Key: IGNITE-20572
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20572
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Sergey Korotkov
>            Priority: Major
>              Labels: ise
>
> CDC process terminates sometimes with the below error. 
> One the cases is cache creation which causes the creation of the .bin file in the binary_meta directory.   Say if custom indexed types are passed via the CacheConfiguration.setIndexedTypes.
> Looks like the race condition.  CDC processed the binary meta file which is already created but still empty.
> {noformat}
> [2023-10-04T22:29:32,673][ERROR][Thread-0][] Cdc error
> java.lang.AssertionError: null
> 	at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:302) ~[classes/:?]
> 	at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:120) ~[classes/:?]
> 	at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:92) ~[classes/:?]
> 	at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:10761) ~[classes/:?]
> 	at org.apache.ignite.internal.processors.cache.binary.BinaryMetadataFileStore.restoreMetadata(BinaryMetadataFileStore.java:222) ~[classes/:?]
> 	at org.apache.ignite.internal.processors.cache.binary.BinaryMetadataFileStore.restoreMetadata(BinaryMetadataFileStore.java:216) ~[classes/:?]
> 	at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.cacheMetadataLocally(CacheObjectBinaryProcessorImpl.java:1076) ~[classes/:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.lambda$updateTypes$4(CdcMain.java:616) ~[classes/:?]
> 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
> 	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) ~[?:?]
> 	at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) ~[?:?]
> 	at java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:294) ~[?:?]
> 	at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206) ~[?:?]
> 	at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161) ~[?:?]
> 	at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300) ~[?:?]
> 	at java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681) ~[?:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.updateTypes(CdcMain.java:627) ~[classes/:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.updateMetadata(CdcMain.java:588) ~[classes/:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.consumeWalSegmentsUntilStopped(CdcMain.java:463) ~[classes/:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.runX(CdcMain.java:324) ~[classes/:?]
> 	at org.apache.ignite.internal.cdc.CdcMain.run(CdcMain.java:266) [classes/:?]
> 	at java.lang.Thread.run(Thread.java:834) [?:?]
> {noformat}
> ***
> Possible solution would be to change the BinaryMetadataFileStore.writeMetadata to create file atomically.
> The same way as in the MarshallerMappingFileStore.writeMapping using the ATOMIC_MOVE.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)