[ 
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: 0.98.10.1
>
>         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 project.



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

Reply via email to