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