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

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

[[email protected]] 
bq. It looks like a ClassNotFoundException throws an IOE if a null path passed 
and otherwise, we go to load from filesystem if not in cache.... which would 
seem to address @Andrew Purtell concern. Is that so?
The discussions around ClassNotFoundException were related to 
{{RegionCoprocessorHost#loadTableCoprocessors}} which catch any Exception 
thrown by {{CPH.load}} logs it and continue ignoring the faulty Coprocessor.

bq. Why we do this? setContextClassLoader on currentThread? Is it in case we 
have stale cl? One that was just replaced in cache?
This something I borrowed off jetty similar sandboxed classloader. 
The reason is that custom CP class implementation might do some gymnastics and 
explicitly retrieve the caller thread context to load other classes and thus 
escaping the custom loader.
                
> 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-v10.txt, 7205-v1.txt, 7205-v3.txt, 7205-v4.txt, 
> 7205-v5.txt, 7205-v6.txt, 7205-v7.txt, 7205-v8.txt, 7205-v9.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

Reply via email to