[
https://issues.apache.org/jira/browse/HBASE-12972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14370360#comment-14370360
]
Andrew Purtell commented on HBASE-12972:
----------------------------------------
I would *really* rather not do it, because it involves most methods in
RegionObserver, RegionServerObserver, RegionServerServices, but it is possible
to keep the methods that accept HRegion objects, deprecate them, and print
warnings if they are used. This would mean the master patch stays as is but the
branch-1 port would have up to a doubling of methods in some interfaces. As
[~busbey] pointed out in a comment above see
[CoprocessHost#useLegacyMethod|https://github.com/apache/hbase/blob/branch-1/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java#L573],
[CoprocesorHost#legacyWarning|https://github.com/apache/hbase/blob/branch-1/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java#L631],
and their use in
[RegionCoprocessorHost|https://github.com/apache/hbase/blob/branch-1/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java#L131].
We'd do the same in RegionObserver and extend their use to more methods in
RegionServerObserver. I advocated for a clean break from 1.1+ but we can do
that only in 2.0 and higher. But please consider the amount of deprecated code
this leaves around throughout all of 1.x as proposed, and it only pushes the
day of reckoning down the road until whenever we do a 2.0. Related, until we
have a 2.0 projects like Phoenix would have no reason to change. The way I read
the above pushing this out to 2.0 is exactly so Phoenix won't have to deal with
this change until 2.0. Do I have that wrong?
> Region, a supportable public/evolving subset of HRegion
> -------------------------------------------------------
>
> Key: HBASE-12972
> URL: https://issues.apache.org/jira/browse/HBASE-12972
> Project: HBase
> Issue Type: New Feature
> Reporter: Andrew Purtell
> Assignee: Andrew Purtell
> Fix For: 2.0.0, 1.1.0
>
> Attachments: HBASE-12972-0.98.patch, HBASE-12972.patch,
> HBASE-12972.patch
>
>
> On HBASE-12566, [~lhofhansl] proposed:
> {quote}
> Maybe we can have a {{Region}} interface that is to {{HRegion}} is what
> {{Store}} is to {{HStore}}. Store marked with {{@InterfaceAudience.Private}}
> but used in some coprocessor hooks.
> {quote}
> By example, now coprocessors have to reach into HRegion in order to
> participate in row and region locking protocols, this is one area where the
> functionality is legitimate for coprocessors but not for users, so an
> in-between interface make sense.
> In addition we should promote {{Store}}'s interface audience to
> LimitedPrivate(COPROC).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)