hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Purtell (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-12979) Use setters instead of return values for handing back statistics from HRegion methods
Date Fri, 06 Feb 2015 18:46:34 GMT

    [ https://issues.apache.org/jira/browse/HBASE-12979?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14309608#comment-14309608

Andrew Purtell commented on HBASE-12979:

See http://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html

Adding methods to a class is fine. ("Adding a method or constructor declaration to a class
will not break compatibility with any pre-existing binaries, even in the case where a type
could no longer be recompiled because an invocation previously referenced a method or constructor
of a superclass with an incompatible type. ")

Adding methods to an interfaces are fine if we are talking about binaries. ("Adding a method
to an interface does not break compatibility with pre-existing binaries.") It will be a compile
time problem though, but only matters where we expect users to implement the affected interfaces
in client code or supportable coprocessor extensions. And we should really provide abstract
base classes for all interfaces to help avoid that. 

Removing methods or changing types is another matter, but that's not what you asked. 

> Use setters instead of return values for handing back statistics from HRegion methods
> -------------------------------------------------------------------------------------
>                 Key: HBASE-12979
>                 URL: https://issues.apache.org/jira/browse/HBASE-12979
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 0.98.10
>            Reporter: Andrew Purtell
>            Assignee: Jesse Yates
>              Labels: phoenix
>             Fix For:
>         Attachments: hbase-12979-v0-master.patch
> In HBASE-5162 (and backports such as HBASE-12729) we modified some HRegion methods to
return statistics for consumption by callers. The statistics are ultimately passed back to
the client as load feedback.
> [~lhofhansl] thinks handing back this information as return values from HRegion methods
is a weird mix of concerns. This also produced a difficult to anticipate binary compatibility
issue with Phoenix. There was no compile time issue because the code of course was not structured
to assign from a method returning void, yet the method signature changes so the JVM cannot
resolve it if older Phoenix binaries are installed into a 0.98.10 release. Let's change the
HRegion methods back to returning 'void' and use setters instead. Officially we don't support
use of HRegion (HBASE-12566) but we do not need to go out of our way to break things (smile)
so I would also like to make a patch release containing just this change to help out our sister

This message was sent by Atlassian JIRA

View raw message