curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jordan Zimmerman (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (CURATOR-193) Release note incompatibilities between Curator 2.6 and 2.7
Date Sun, 21 Jun 2015 16:27:00 GMT

     [ 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)

Mime
View raw message