[
https://issues.apache.org/jira/browse/HBASE-11657?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14091639#comment-14091639
]
stack commented on HBASE-11657:
-------------------------------
It makes sense to me going to a RegionLocator Interface to obtain
(H)RegionLocation s.
The Interface seems a little unhinged not having methods that specify the
associated table but hanging the Interface off HTable takes care of that.
The '@since 0.99' is good.
The other methods are an awkward fit in this new Interface -- getStartKeys,
etc. -- but they are bastard children anyways and rather than do a StartKeys
interface, lets let them hang in here for now at least.
In HConnection it should be getRegionLocator rather than getRegionLocation?
nit: 'of teh ' should be 'of the'
Whats this mean boss: "RegionLocator needs to be unmanaged..." We have to
close or return the locator?
Otherwise patch is great. +1 I can fix above minors on commit if you'd like,
just say.
> Put HTable region methods in an interface
> -----------------------------------------
>
> Key: HBASE-11657
> URL: https://issues.apache.org/jira/browse/HBASE-11657
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 0.99.0
> Reporter: Carter
> Assignee: Carter
> Fix For: 0.99.0
>
> Attachments: HBASE_11657.patch, HBASE_11657_v2.patch,
> HBASE_11657_v3.patch, HBASE_11657_v3.patch
>
>
> Most of the HTable methods are now abstracted by HTableInterface, with the
> notable exception of the following methods that pertain to region metadata:
> {code}
> HRegionLocation getRegionLocation(final String row)
> HRegionLocation getRegionLocation(final byte [] row)
> HRegionLocation getRegionLocation(final byte [] row, boolean reload)
> byte [][] getStartKeys()
> byte[][] getEndKeys()
> Pair<byte[][],byte[][]> getStartEndKeys()
> void clearRegionCache()
> {code}
> and a default scope method which maybe should be bundled with the others:
> {code}
> List<RegionLocations> listRegionLocations()
> {code}
> Since the consensus seems to be that these would muddy HTableInterface with
> non-core functionality, where should it go? MapReduce looks up the region
> boundaries, so it needs to be exposed somewhere.
> Let me throw out a straw man to start the conversation. I propose:
> {code}
> org.apache.hadoop.hbase.client.HRegionInterface
> {code}
> Have HTable implement this interface. Also add these methods to HConnection:
> {code}
> HRegionInterface getTableRegion(TableName tableName)
> HRegionInterface getTableRegion(TableName tableName, ExecutorService pool)
> {code}
> [~stack], [~ndimiduk], [~enis], thoughts?
--
This message was sent by Atlassian JIRA
(v6.2#6252)