[
https://issues.apache.org/jira/browse/HBASE-1251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680588#action_12680588
]
Jim Kellerman commented on HBASE-1251:
--------------------------------------
The biggest downside I see is that since a new TableServers is built up if the
configuration changes, the old TableServers will
be orphaned if the old configuration is never used again. The old TableServers
cannot be garbage collected because the
HBASE_INSTANCES map still holds a reference to it. Could potentially use up a
not insignificant amount of memory if this
is done too often.
A couple of other comments:
- Why add hash codes in HBaseConfiguration.hashCode rather than use xor ? I
would think using ^= rather than += would produce a better hash value.
- Some of the indentation is inconsistent. 4 spaces instead of two. That should
be fixed.
> HConnectionManager.getConnection(HBaseConfiguration) returns same HConnection
> for different HBaseConfigurations
> ----------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-1251
> URL: https://issues.apache.org/jira/browse/HBASE-1251
> Project: Hadoop HBase
> Issue Type: Bug
> Components: client
> Affects Versions: 0.19.0
> Reporter: Guilherme Mauro Germoglio Barbosa
> Attachments: HBASE-1251.patch
>
>
> This occurs when the following happens:
> 1. Consider a client that invokes HBaseAdmin.checkHBaseAvailable(config)
> before doing anything. Although this method copies the HBaseConfiguration
> object and sets hbase.client.retries.number to 1 (see HBaseAdmin, line 751),
> it creates an HBaseAdmin object, which invokes
> HConnectionManager.getConnection(conf). Please notice that this conf is that
> with hbase.client.retries.number equals to 1.
> 2. HConnectionManager.getConnection then creates a HConnection using this
> conf and puts it into a static map (see HConnectionManager, line 93) indexed
> by hbase.rootdir.
> 3. Then, if the same client now creates a HTable object (using, for instance,
> a HBaseConfiguration with hbase.client.retries.number equals to 10 but the
> same hbase.rootdir), it will invoke HConnectionManager.getConnection(conf)
> again (see HTable, line 109). However, when it checks the static map for a
> HConnection it finds one - the one previously created by the HBaseAdmin
> object and using hbase.client.retries.number 1 - and returns it without
> creating a new one with the correct HBaseConfiguration.
> However, the expected behavior is: HConnectionManager must return different
> HConnections for different HBaseConfigurations.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.