hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adrian Muraru (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7205) Coprocessor classloader is replicated for all regions in the HRegionServer
Date Wed, 05 Dec 2012 20:51:59 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13510755#comment-13510755
] 

Adrian Muraru commented on HBASE-7205:
--------------------------------------

[~ted_yu]
bq. I only found one reference to classLoaders, shown above. I wonder what purpose classLoaders
would serve.
instance attribute "classLoaders" is keeping (strong) references to (possible multiple) region
coproc classloaders.

classLoadersCache on the other hand is the global cache (static) shared by all regions in
RS.
The idea is that classloaders instances (values in classLoadersCache keyed by jar path) are
WeakReferences so that they are GC eligible once there is no 
region using them (what keeps them in cache is the above "active classLoaders")

Agree, the naming is a bit misleading in my patch, should be:
{code:java}
+  protected Set<ClassLoader> activeCoprocessorClassLoaders = new HashSet<ClassLoader>();
+  static ConcurrentMap<Path, ClassLoader> classLoadersCache = new MapMaker()
{code}
                
> Coprocessor classloader is replicated for all regions in the HRegionServer
> --------------------------------------------------------------------------
>
>                 Key: HBASE-7205
>                 URL: https://issues.apache.org/jira/browse/HBASE-7205
>             Project: HBase
>          Issue Type: Bug
>          Components: Coprocessors
>    Affects Versions: 0.92.2, 0.94.2
>            Reporter: Adrian Muraru
>            Assignee: Ted Yu
>            Priority: Critical
>             Fix For: 0.96.0, 0.94.4
>
>         Attachments: 7205-v1.txt, HBASE-7205_v2.patch
>
>
> HBASE-6308 introduced a new custom CoprocessorClassLoader to load the coprocessor classes
and a new instance of this CL is created for each single HRegion opened. This leads to OOME-PermGen
when the number of regions go above hundres / region server. 
> Having the table coprocessor jailed in a separate classloader is good however we should
create only one for all regions of a table in each HRS.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message