Details
-
Bug
-
Status: Resolved
-
Blocker
-
Resolution: Fixed
-
0.8.0
-
None
-
None
Description
Just realized that zkclient 0.2.0 introduced a non-backward compatible api. In 0.1.0, it has
public void writeData(java.lang.String path, java.lang.Object datat)
public void writeData(java.lang.String path, java.lang.Object datat, int expectedVersion)
In 0.2.0, they are changed to
public Stat writeData(java.lang.String path, java.lang.Object datat)
public Stat writeData(java.lang.String path, java.lang.Object datat, int expectedVersion)
This means that If an application uses Kafka and also drags in another library (X) that depends on zkclient 0.1.0 (and uses "void writeData())", then when they upgrade to Kafka 0.8 consumer (which uses zkclient 0.2.0), their application can't just upgrade to zkclient 0.2.0 since library X's call to "void writeData()" will fail because of the signature change. Since zkclient 0.1.0 is widely used, this issue may affect many applications.
This non-backward compatible change was introduced by me since I didn't realize it's a signature change then. I am trying to see if zkclient can release a new version that's compatible. If that can't be done in time, we will have to downgrade zkclient to 0.1.0 and add the needed ZK functionality inside Kafka. This is not ideal, but can solve the issue quicker.