[ 
https://issues.apache.org/jira/browse/KAFKA-8824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16912787#comment-16912787
 ] 

John Roesler commented on KAFKA-8824:
-------------------------------------

Ah, I think this was just a mistake on my part.

The code in 2.2 used the "FullChangeSerde" to serialize the (old value, new 
value) pair when buffering records, which bypasses the serializer for a null 
value:

{code}
                final byte[] oldBytes = data.oldValue == null ? null : 
innerSerializer.serialize(topic, data.oldValue);
{code}

But I refactored it in 2.3, and now it doesn't do the bypass

{code}
            final V priorValue = value.oldValue;
            serializedPriorValue = 
valueSerde.innerSerde().serializer().serialize(changelogTopic, priorValue);
{code}

My apologies. I'll submit a quick PR to fix it. In the mean time, it's safe to 
just return "null" from your serde.

> InMemoryTimeOrderedKeyValueBuffer propagates nulls when supress is configured 
> ------------------------------------------------------------------------------
>
>                 Key: KAFKA-8824
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8824
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.3.0, 2.4.0
>            Reporter: Ferran altimiras
>            Priority: Major
>             Fix For: 2.4.0, 2.3.1
>
>         Attachments: Test.java
>
>
> Maybe this is not a bug, but it looks like something is wrong. This didn't 
> happen in kafka streams 2.2.
>  
> Applying an aggregate() with suppress on kafka 2.3 sends nulls into 
> Serializer if delayed msgs are received.
> Not sure if some data is lost or not(yet). But IMHO getting a null to 
> serialize the "accumulator" object is suspicious that something is wrong.
>  
> Attached java code to demonstrate it.
> With kafka 2.3 -> LongSerde prints NULL, not in kafka 2.2
>  
>  
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to