[ 
https://issues.apache.org/jira/browse/HBASE-2027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dave Latham updated HBASE-2027:
-------------------------------

    Status: Patch Available  (was: Open)

> HConnectionManager.HBASE_INSTANCES leaks TableServers
> -----------------------------------------------------
>
>                 Key: HBASE-2027
>                 URL: https://issues.apache.org/jira/browse/HBASE-2027
>             Project: Hadoop HBase
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>            Reporter: Dave Latham
>            Assignee: Dave Latham
>             Fix For: 0.20.3, 0.21.0
>
>         Attachments: 2027-branch.20.patch
>
>
> HConnectionManager.HBASE_INSTANCES is a WeakHashMap from HBaseConfiguration 
> to TableServers.  However, each TableServers has a strong reference back to 
> the HBaseConfiguration key so they are never freed.  (See note at 
> http://java.sun.com/javase/6/docs/api/java/util/WeakHashMap.html : 
> "Implementation note: The value objects in a WeakHashMap are held by ordinary 
> strong references. Thus care should be taken to ensure that value objects do 
> not strongly refer to their own keys, either directly or indirectly, since 
> that will prevent the keys from being discarded.")
> Moreover, HBaseConfiguration implements hashCode() but not equals() so 
> identical HBaseConfiguration objects each get their own TableServers object.
> We had a long running HBase client process that was creating new HTable() 
> objects, each creating a new HBaseConfiguration() and thus a new TableServers 
> object.  It eventually went OOM, and gave a heap dump indicating 360 MB of 
> data retained by HBASE_INSTANCES.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to