Hey @hzxa21, it seems that what you and Jun suggested to do is to have a single 
multiops that 1) updates controller path, 2) read controller epoch and 3) 
updates controller epoch. Another alternative approach is to have a single 
multiops that 1) updates controller path and 2) reads controller epoch with its 
zkversoin. Then the controller can updates controller epoch with the addition 
zkversion check.

Do you think the alternative approach would avoid the race condition and ensure 
correctness? If so, I am wondering if the alternative would be easier to reason 
about. I find it a bit easier because the it follows the idea that all 
zookeeper write operation by controller will be based on the controller epoch 
zkversion check, except for the controller znode write operation which by 
design can not rely on the controller epoch zkversion check. And a multiop that 
does one write and one read seems simpler than a multiop that does 
write-read-write.



[ Full content available at: https://github.com/apache/kafka/pull/5101 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to