curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sean Busbey (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CURATOR-193) Release note incompatibilities between Curator 2.6 and 2.7
Date Wed, 11 Mar 2015 18:01:38 GMT
Sean Busbey created CURATOR-193:
-----------------------------------

             Summary: Release note incompatibilities between Curator 2.6 and 2.7
                 Key: CURATOR-193
                 URL: https://issues.apache.org/jira/browse/CURATOR-193
             Project: Apache Curator
          Issue Type: Task
          Components: Documentation
    Affects Versions: 2.7.1, 2.7.0, 2.6.0
            Reporter: Sean Busbey
            Priority: Critical


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+.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message