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

Andrew Purtell commented on HBASE-12856:
----------------------------------------

On further thought using weak refs actually seems incorrect. We create a 
classloader per implementation jar so a coprocessor implementation can have 
singletons across all regions in a regionserver. (This was before we had 
RegionServerObserver, but is still a valid impl technique.) So having separate 
and distinct classloaders for the same table coprocessor implementation would 
confound expectations and produce incorrect runtime behavior. 

So unless objection I am going to change the table coprocessor classloader 
cache to use normal references.


> Revisit table coprocessor classloader caching
> ---------------------------------------------
>
>                 Key: HBASE-12856
>                 URL: https://issues.apache.org/jira/browse/HBASE-12856
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>             Fix For: 2.0.0, 0.98.10, 1.1.0
>
>
> For table coprocessors, we create coprocessor classloaders and cache them 
> keyed on the path to the coprocessor jar. However, we cache weak refs so it's 
> quite possible if the refs are not being retained due to heap pressure we 
> might create a new classloader on the next region open, i.e. after a split or 
> relocation. If under very heavy write load, perhaps ingest with all edits 
> skipping the WAL for example, we'd be both generating a ton of garbage and 
> rapidly splitting at the same time. 
> We should revisit the notion of keeping only weak refs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to