You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Bernardo Botella Corbi (Jira)" <ji...@apache.org> on 2026/09/14 08:51:00 UTC
[jira] [Assigned] (CASSANALYTICS-178) CDC logs NPE for deleted column values
[ https://issues.apache.org/jira/browse/CASSANALYTICS-178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bernardo Botella Corbi reassigned CASSANALYTICS-178:
----------------------------------------------------
Assignee: Bernardo Botella Corbi (was: Jyothsna Konisa)
> 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: Bernardo Botella Corbi
> Priority: Normal
> Labels: lhf
> Time Spent: 10m
> Remaining Estimate: 0h
>
> 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: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org