You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Jordan Zimmerman (JIRA)" <ji...@apache.org> on 2015/06/21 18:27:00 UTC

[jira] [Closed] (CURATOR-193) Release note incompatibilities between Curator 2.6 and 2.7

     [ https://issues.apache.org/jira/browse/CURATOR-193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jordan Zimmerman closed CURATOR-193.
------------------------------------
    Resolution: Implemented

We will strive to maintain semantic versioning in the future.

> 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.6.0, 2.7.0, 2.7.1
>            Reporter: Sean Busbey
>            Priority: Critical
>              Labels: compatibility, release_notes, versioning
>
> 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)