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