Yifan Cai created CASSANALYTICS-178:
---------------------------------------
Summary: 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
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]