[
https://issues.apache.org/jira/browse/HBASE-15832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290367#comment-15290367
]
Jeongdae Kim commented on HBASE-15832:
--------------------------------------
We made a detour to avoid this issue(memory leak) by using a thread pool with
static size for hconnection, and the map for SyncFuture in FSHLog is not
increasing until now (for more than 3 days).
I think [~vrodionov]'s patch is not best solution for this issue, because users
already use some short circuit hconnections like CoprocessorHConnection or
ConnectionUtils.createShortCircuitHConnection that uses a thread pool with
variable size by default.
So, my suggestion to fix this issue is that 1) a map, syncFuturesByHandler is
changed to a object pool that can be shared with all threads in a RegionServer
or 2) SyncFuture object can be reused by using ThreadLocal.
and, I can handle this issue, if you[~vrodionov] don't mind. :)
Thanks.
> memory leak in FSHLog.
> ----------------------
>
> Key: HBASE-15832
> URL: https://issues.apache.org/jira/browse/HBASE-15832
> Project: HBase
> Issue Type: Bug
> Components: hbase
> Affects Versions: 1.1.2
> Reporter: Jeongdae Kim
> Assignee: Vladimir Rodionov
> Attachments: HBASE-15832-v1.patch, Screenshot-Java -
> -home-jeongdae-work-regionserver_jmap_104p_sn5_20160509-sn5_heap.hprof -
> Eclipse -1.png
>
>
> FSHLog module uses a map to reuse SyncFuture objects, and assumes that this
> map will be used by RPC Handler threads only. but, in some cases, this
> assumption is wrong.
> for example, if some coprocessors are registered, and these coprocessors uses
> CoprocessorHConnection insteadof HConnection, and request some puts/ or
> deletes throgh CoprocessorHConnection, all mutations will be handled by
> hconnection's batchPool, not RPC Handlers. because hconnection's batchPool is
> dynamically growing or shrinking, all new threads in hconnection are put to
> the map in FSHLog, and this map will grow continuously.
> in attached image file, the map to reuse SyncFuture accupies about 4GB memory
> and has (almost all) entries holding hconnection's thread.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)