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

John Roesler commented on KAFKA-8810:
-------------------------------------

Hi all,

Offhand, it seems like a high-level registry would support many useful aspects 
of governance in an enterprise context. For this specific purpose, it does seem 
like a signature/digest of the topology would be sufficient, though. 

Note that you could either have the members hash their topology and send the 
hash in the JoinGroup request, in which case the leader could take some action 
(like leaving the mis-matched member out of the assignment and returning an 
error or something). Or, as suggested, you could have the leader return it's 
digest of the topology in the JoinGroup response, and then members could 
compare it to their versions and shut down or something if they don't match. 
Not sure which side of the symmetry makes more sense.

Note that there are some other configurations that might be worth considering, 
like if only one member is using EOS, or if a member has a different set of 
serdes.

All of this notwithstanding, I'm wondering how this could possibly work with 
rolling upgrades (i.e., the topology change is not an accident). Another 
question is whether it's possible to also solve the related problem in which 
you run an app, accidentally change the topology, and then restart the whole 
cluster at once. Then, the leader wouldn't be able to save us, since it also 
contains the mistake. Perhaps something like Patrik's idea is necessary for the 
general case, I'm not sure.

WDYT?

> Add mechanism to detect topology mismatch between streams instances
> -------------------------------------------------------------------
>
>                 Key: KAFKA-8810
>                 URL: https://issues.apache.org/jira/browse/KAFKA-8810
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Vinoth Chandar
>            Priority: Major
>
> Noticed this while reading through the StreamsPartitionAssignor related code. 
> If an user accidentally deploys a different topology on one of the instances, 
> there is no mechanism to detect this and refuse assignment/take action. Given 
> Kafka Streams is designed as an embeddable library, I feel this is rather an 
> important scenario to handle. For e.g, kafka streams is embedded into a web 
> front end tier and operators deploy a hot fix for a site issue to a few 
> instances that are leaking memory and that accidentally also deploys some 
> topology changes with it. 
> Please feel free to close the issue, if its a duplicate. (Could not find a 
> ticket for this) 



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

Reply via email to