[
https://issues.apache.org/jira/browse/HBASE-1251?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680934#action_12680934
]
Guilherme Mauro Germoglio Barbosa commented on HBASE-1251:
----------------------------------------------------------
Stack:
yes, this is my intent. I think the best scenario would be the hash value be
affected only when the values that are used for the creation of connections are
modified. However, it would be quite annoying to maintain the list of these
values for every release.
Jim:
I think the use of a WeakHashMap in HBASE_INSTANCES can solve the probem of old
orphaned TableServers. What do you think? This way the old TableServers could
be garbage collected.
Related to the hash code, I've used addition because it is the way
java.util.HashMaps compute their hash value (I have no argument against xor).
> 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.