[
https://issues.apache.org/jira/browse/HADOOP-1509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12506924
]
James Kennedy commented on HADOOP-1509:
---------------------------------------
+HClient.getConf doesn't have to be public though I see no harm in it.
Supposedly the client user already has a handle to the conf object anyway
though, i'll make it protected.
+perhaps exposing HClient.getOpenServers was overzealous. The only place where
I use it in my extension is in where I override HClient.getHRegionConnection().
The only reason this override is necessary is because to make RPC work with
added methods in my HRegionServer extension (call it QRegionServer), i need to
inject the QRegionServerInterface.
e.g.
server = (QRegionInterface) RPC.waitForProxy(
QRegionInterface.class,
QRegionInterface.versionID,
regionServer.getInetSocketAddress(),
getConf());
Incidentally that is also the only place where I use the, now protected,
getConf() method.
If there was a configuration parameter that specified an HRegionServer
extending interface, and the base impl of HClient.getHRegionConnection() used
that to initialize the server proxy, then all that would become unnecessary.
What do you think of that idea? I guess a similar pattern should exist for
injecting specific HClient impls into HMaster too.
+About public HRegion and its scanner... I'm not sure how to make it accessible
only to HRegionServer subclasses without making it an inner class. I have a
particular need for it where my QRegionServer perfroms scans on its own
HRegions... put perhaps there isn't a general need for that and I could remove
that from this patch. Or maybe HRegion manipulation is a likely need for
HRegionServer extensions... what do you think?
> Open HRegionServer/HClient for extension
> ----------------------------------------
>
> Key: HADOOP-1509
> URL: https://issues.apache.org/jira/browse/HADOOP-1509
> Project: Hadoop
> Issue Type: Improvement
> Components: contrib/hbase
> Affects Versions: 0.14.0
> Reporter: James Kennedy
> Assignee: James Kennedy
> Priority: Minor
> Fix For: 0.14.0
>
> Attachments: openForExtension-v2.patch, openForExtension.patch
>
>
> For what i'm doing I found it necessary to extend
> HRegionServer/HRegion/HClient for some custom functionality.
> Following good Java practice I see that the HBase code as been programmed
> defensively, keeping stuff private as much as possible.
> However, for extensibility it would be nice if the servers/client were easy
> to extend.
> Attached is a patch that makes several methods protected instead of private,
> adds getters to fields of inner classes, and some other modifications i found
> were useful for some simple extension code.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.