hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Guilherme Mauro Germoglio Barbosa (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-1251) HConnectionManager.getConnection(HBaseConfiguration) returns same HConnection for different HBaseConfigurations
Date Wed, 11 Mar 2009 17:18:50 GMT

    [ 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.


Mime
View raw message