[ https://issues.apache.org/jira/browse/KAFKA-12503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
A. Sophie Blee-Goldman reassigned KAFKA-12503: ---------------------------------------------- Assignee: Walker Carlson > Resizing the thread cache in a non thread safe way can cause records to be > redirected throughout the topology > ------------------------------------------------------------------------------------------------------------- > > Key: KAFKA-12503 > URL: https://issues.apache.org/jira/browse/KAFKA-12503 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 2.8.0 > Reporter: Walker Carlson > Assignee: Walker Carlson > Priority: Blocker > Fix For: 2.8.0 > > > When a thread is added, removed or replaced the cache is resized. When the > thread cache was resized it was being done so from the thread initiating > these calls. This can cause the record to be redirected to the wrong > processor via the call to `evict` in the cache. The evict flushes records > downstream to the next processor after the cache. But if this is on the wrong > thread the wrong processor receives them. > This can cause 3 problems. > 1) When the owner finishes processing the record it set the current node to > null in the processor context a this then causes the other processor to throw > an exception `StreamsException: Current node is unknown.`. > 2) Depending on the type it can cause a class cast exception as the record is > a different type. Mostly this happened when the value types were different > inside of the map node from the toStream method > 3) A silent issue is it could cause data to be processed by the wrong node > and cause data corruption. We have not been able to confirm this last one but > it is the most dangerous in many ways. -- This message was sent by Atlassian Jira (v8.3.4#803005)