You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2019/10/02 17:24:00 UTC

[jira] [Commented] (KAFKA-8671) NullPointerException occurs if topic associated with GlobalKTable changes

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

ASF GitHub Bot commented on KAFKA-8671:
---------------------------------------

amleung21 commented on pull request #7188: KAFKA-8671: NullPointerException occurs if topic associated with GlobalKTable changes
URL: https://github.com/apache/kafka/pull/7188
 
 
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


> NullPointerException occurs if topic associated with GlobalKTable changes
> -------------------------------------------------------------------------
>
>                 Key: KAFKA-8671
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8671
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.0.0, 2.1.0, 2.2.0, 2.3.0
>            Reporter: Alex Leung
>            Assignee: Alex Leung
>            Priority: Critical
>
> The following NullPointerException occurs when the global/.checkpoint file contains a line with a topic previously associated with (but no longer configured for) a GlobalKTable:
> {code:java}
> java.lang.NullPointerException
> at org.apache.kafka.streams.processor.internals.GlobalStateUpdateTask.update(GlobalStateUpdateTask.java:85)
> at org.apache.kafka.streams.processor.internals.GlobalStreamThread$StateConsumer.pollAndUpdate(GlobalStreamThread.java:241)
> at org.apache.kafka.streams.processor.internals.GlobalStreamThread.run(GlobalStreamThread.java:290){code}
>  
> After line 84 ([https://github.com/apache/kafka/blob/2.0/streams/src/main/java/org/apache/kafka/streams/processor/internals/GlobalStateUpdateTask.java#L84)] `sourceNodeAndDeserializer` is null for the old, but still valid, topic. This can be reproduced with the following sequence:
>  # create a GlobalKTable associated with topic, 'global-topic1'
>  # change the topic associated with the GlobalKTable to 'global-topic2' 
>  ##  at this point, the global/.checkpoint file will contain lines for both topics
>  # produce messages to previous topic ('global-topic1')
>  # the consumer will attempt to consume from global-topic1, but no deserializer associated with global-topic1 will be found and the NPE will occur
> It looks like the following recent commit has included checkpoint validations that may prevent this issue: https://github.com/apache/kafka/commit/53b4ce5c00d61be87962f603682873665155cec4#diff-cc98a6c20f2a8483e1849aea6921c34dR425



--
This message was sent by Atlassian Jira
(v8.3.4#803005)