[ 
https://issues.apache.org/jira/browse/CASSANALYTICS-178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yifan Cai updated CASSANALYTICS-178:
------------------------------------
    Labels: lhf  (was: )

> CDC logs NPE for deleted column values
> ---------------------------------------
>
>                 Key: CASSANALYTICS-178
>                 URL: https://issues.apache.org/jira/browse/CASSANALYTICS-178
>             Project: Apache Cassandra Analytics
>          Issue Type: Bug
>            Reporter: Yifan Cai
>            Assignee: Jyothsna Konisa
>            Priority: Normal
>              Labels: lhf
>
> It is a minor bug when converting column values to strings for logging 
> purpose.
> Column value is set to null on deletion.
> The null value is handled incorrectly in 
> org.apache.cassandra.cdc.CdcLogMode#columnsToString.
> {code:java}
> columnName="column1"
> message="Failed to deserialize column value."
> exception="java.lang.NullPointerException
>       at 
> org.apache.cassandra.utils.ByteBufferUtil.toInt(ByteBufferUtil.java:491)
>       at 
> org.apache.cassandra.db.marshal.ByteBufferAccessor.toInt(ByteBufferAccessor.java:208)
>       at 
> org.apache.cassandra.db.marshal.ByteBufferAccessor.toInt(ByteBufferAccessor.java:42)
>       at 
> org.apache.cassandra.serializers.CollectionSerializer.readCollectionSize(CollectionSerializer.java:147)
>       at 
> org.apache.cassandra.serializers.ListSerializer.deserialize(ListSerializer.java:96)
>       at 
> org.apache.cassandra.serializers.ListSerializer.deserialize(ListSerializer.java:35)
>       at 
> org.apache.cassandra.serializers.TypeSerializer.deserialize(TypeSerializer.java:45)
>       at 
> org.apache.cassandra.spark.data.AbstractCqlType.deserializeToJavaType(AbstractCqlType.java:63)
>       at 
> org.apache.cassandra.spark.data.CqlField$CqlType.deserializeToJavaType(CqlField.java:149)
>       at 
> org.apache.cassandra.cdc.CdcLogMode.columnToString(CdcLogMode.java:161)
>       at 
> java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>       at 
> java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
>       at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>       at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>       at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>       at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>       at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>       at 
> org.apache.cassandra.cdc.CdcLogMode.columnsToString(CdcLogMode.java:175)
>       at org.apache.cassandra.cdc.CdcLogMode$3.info(CdcLogMode.java:107)
>       at 
> org.apache.cassandra.cdc.kafka.KafkaPublisher.processEvent(KafkaPublisher.java:168)
> {code}
> Later, the column is logged as `[column1 : unknown]` in 
> org.apache.cassandra.cdc.kafka.KafkaPublisher.
> CdcLogMode should
>  # stop logging at the error level, as it is not a true failure.
>  # correctly handle the null value, i.e. logging the null value, instead of 
> unknown.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to