From f7e190fca129997a5511048c57123bdf5825e6de Mon Sep 17 00:00:00 2001 From: Bernardo Botella Date: Mon, 14 Sep 2026 10:26:21 +0200 Subject: [PATCH] CASSANALYTICS-178: Fix NPE --- .../main/java/org/apache/cassandra/cdc/CdcLogMode.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cassandra-analytics-cdc-codec/src/main/java/org/apache/cassandra/cdc/CdcLogMode.java b/cassandra-analytics-cdc-codec/src/main/java/org/apache/cassandra/cdc/CdcLogMode.java index 91feb6048..e89e27386 100644 --- a/cassandra-analytics-cdc-codec/src/main/java/org/apache/cassandra/cdc/CdcLogMode.java +++ b/cassandra-analytics-cdc-codec/src/main/java/org/apache/cassandra/cdc/CdcLogMode.java @@ -19,6 +19,7 @@ package org.apache.cassandra.cdc; +import java.nio.ByteBuffer; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; @@ -155,10 +156,17 @@ public static CdcLogMode fromOption(String name) private static String columnToString(Value fieldValue) { + ByteBuffer value = fieldValue.getValue(); + if (value == null) + { + // null value means the column is deleted; not a deserialization failure + return String.format("[%s : null]", fieldValue.columnName); + } + try { CqlField.CqlType type = typeLookup.apply(KeyspaceTypeKey.of(fieldValue.keyspace, fieldValue.columnType)); - Object javaValue = type.deserializeToJavaType(fieldValue.getValue()); + Object javaValue = type.deserializeToJavaType(value); return String.format("[%s : %s]", fieldValue.columnName, javaValue); } catch (Throwable t)