[ https://issues.apache.org/jira/browse/KAFKA-8671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16943181#comment-16943181 ]
ASF GitHub Bot commented on KAFKA-8671: --------------------------------------- amleung21 commented on pull request #7437: KAFKA-8671: NullPointerException occurs if topic associated with GlobalKTable changes URL: https://github.com/apache/kafka/pull/7437 A NullPointerException occurs when the global/.checkpoint file contains a line with an obsolete (but valid) topic. Log an error and throw exception when non-relevant topic-partitions from checkpoint file are encountered. Added a unit test to verify that non-relevant topics are detected and an exception is thrown. Also, manually ran a streams application with a modified global/.checkpoint file containing an obsolete topic partition and verified that the error is logged and initialization fails. ### Committer Checklist (excluded from commit message) - [ ] Verify design and implementation - [ ] Verify test coverage and CI build status - [ ] Verify documentation (including upgrade notes) ---------------------------------------------------------------- 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: us...@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)