[
https://issues.apache.org/jira/browse/HBASE-12117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14153960#comment-14153960
]
Andrew Purtell commented on HBASE-12117:
----------------------------------------
I created HBASE-12128 for the specific case mentioned above and changed this
to an umbrella to catch more instances of the issue.
> Constructors that use Configuration may be harmful
> --------------------------------------------------
>
> Key: HBASE-12117
> URL: https://issues.apache.org/jira/browse/HBASE-12117
> Project: HBase
> Issue Type: Umbrella
> Reporter: Andrew Purtell
> Attachments: traces.client.c.svg, traces.client.getHTable.svg
>
>
> There's a common pattern in HBase code where in the constructor, or in an
> initialization method also called once per instantiation, or both, we look up
> values from Hadoop Configuration and store them into fields. This can be
> expensive if the object is frequently created. Configuration is a heavyweight
> registry that does a lot of string operations and regex matching. See
> attached example. Method calls into Configuration account for 48.25% of CPU
> time when creating the HTable object in 0.98. (The remainder is spent
> instantiating the RPC controller via reflection, a separate issue that merits
> followup elsewhere.) Creation of HTable instances is expected to be a
> lightweight operation if a client is using unmanaged HConnections; however
> creating HTable instances takes up about 18% of the client's total on-CPU
> time. This is just one example where constructors that use Configuration may
> be harmful.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)