Please release note that Curator 2.7 is incompatible with Curator 2.6 in the following ways:
- org.apache.curator.utils.PathUtils.validatePath(String) in curator-client
In release 2.7.0,
CURATOR-136 changed the return type of this method from void to String. This is fine for a semver minor version under source compatibility, but is a violation of semver under binary compatibility. A downstream user will get NoSuchMethodError if their already compiled class uses this method.
Downstream users should recompile their code against Curator 2.7.0+
- org.apache.curator.framework.recipes.shared.SharedCountReader.getVersionedValue() in curator-recipes
- org.apache.curator.framework.recipes.shared.SharedValueReader.getVersionedValue() in curator-recipes
In release 2.7.0, I think
CURATOR-151 added these two methods to these interfaces as a part of improving an API.
The changes are fine for binary compatibility provided nothing in the framework ever calls them (doing so will result in NoSuchMethodError when called on an instance compiled against the older interface). AFAICT, nothing in the framework accepts one of these interfaces and then calls this method.
However, the addition of methods to Java interfaces breaks source compatibility. The inter-process semaphore recipes work on arbitrary SharedCountReader instances. That means that downstream folks who made their own implementation of the SharedCountReader interface under 2.6.0 will get a compilation error when they attempt to update to 2.7.0+.
Downstream users will need to implement the added method before compiling against Curator 2.7.0+.