[
https://issues.apache.org/jira/browse/HBASE-12128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14223406#comment-14223406
]
Enis Soztutar commented on HBASE-12128:
---------------------------------------
This looks good. TestInterfaceAudienceAnnotations is a new test that checks
whether every public class has a InterfaceAudience annotation. I think we
should make TableConfiguration a package-protected class so that users do not
use it. Also we can annotate it with InterfaceAudience.Private as well.
I was thinking about the TableConfiguration and the rpc factories. One
alternative approach we can take is to change TableConfiguration to be a
TableContext, and have the context own both the configuration and rpc factories
(and possibly other table related concept). The patch as it is will do the job.
Just a suggestion, it is up to you which one is better.
> Cache configuration and RpcController selection for Table in Connection
> -----------------------------------------------------------------------
>
> Key: HBASE-12128
> URL: https://issues.apache.org/jira/browse/HBASE-12128
> Project: HBase
> Issue Type: Sub-task
> Affects Versions: 2.0.0
> Reporter: Andrew Purtell
> Assignee: Stephen Yuan Jiang
> Fix For: 1.0.0, 2.0.0, 0.98.9, 0.99.2
>
> Attachments: HBASE-12128.v1-2.0.patch
>
> Original Estimate: 120h
> Time Spent: 72h
> Remaining Estimate: 48h
>
> Creating Table instances should be lightweight. Apps that manage their own
> Connections are expected to create Tables on demand for each interaction.
> However we look up values from Hadoop Configuration when constructing Table
> objects for storing to some of its fields. Configuration is a heavyweight
> registry that does a lot of string operations and regex matching. Method
> calls into Configuration account for 48.25% of CPU time when creating the
> HTable object in 0.98. Another ~48% of CPU is spent constructing the desired
> RpcController object via reflection in 0.98. Together this can account for
> ~20% of total on-CPU time of the client. See parent issue for more detail.
> We are using Connection like a factory for Table. We should cache
> configuration for Table in Connection. We should also create by reflection
> once and cache the desired RpcController object, and clone it for new Tables.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)