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

Matthias J. Sax commented on KAFKA-8828:
----------------------------------------

[~johannz], [~marcospassos]: thanks for the details.

If you create a `GlobalKTable` it's assume that you only use it in a 
stream-globalTable join. It's considered an anti-pattern to pass it into a 
`transformer()` – also, it's incorrect to write into the global state from the 
transformer anyway (only the corresponding Processor should write into the 
global state) – if you want to delete from a global state, you need to write a 
tombstone into the corresponding input topic – otherwise, you may get 
inconsistent data: on failure, the global state will be recreated from the 
topic and hence a deleted record would reappear.

You should use `StreamsBuilder.addGlobalStore()` instead.

> [BC Break] Global store returns a TimestampedKeyValueStore in 2.3
> -----------------------------------------------------------------
>
>                 Key: KAFKA-8828
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8828
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>    Affects Versions: 2.3.0
>            Reporter: Marcos Passos
>            Priority: Major
>
> Since 2.3, {{ProcessorContext}} returns a {{TimestampedKeyValueStore}} for 
> global stores, which is backward incompatible. This change makes the upgrade 
> path a lot painful and involves creating a non-trivial adapter to hide the 
> timestamp-related functionality in cases where it is not needed.



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

Reply via email to