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

Lars Hofhansl edited comment on HBASE-12856 at 1/14/15 7:05 PM:
----------------------------------------------------------------

+1

Weak refs are wrong anyway, they are only useful to access something that is 
strongly referenced from somewhere else and never prevent an object from being 
claimed by themselves. If that's the only reference we're essentially not 
caching. In a micro test it might work as we might not run into any GC.

At the very least we should use soft refs. Even there soft refs for caching are 
generally not a good idea (there are some exceptions). They get cleaned up 
under heap pressure and when the data is accessed again they need to be 
re-cached and add more heap pressure.

If we do not want to rock the boat now let's change them to soft refs, at least 
then we have some caching. Otherwise let's use strong refs.



was (Author: lhofhansl):
+1

Weak refs are wrong anyway, they can only be used to access something that 
strongly referenced from somewhere else and never prevent an object from being 
claimed. If that's the only reference we're essentially not caching. In a micro 
test it might work as we might not run into any GC.

At the very least we should use soft refs. Even there soft refs for caching are 
generally not a good idea (there are some exceptions). They get cleaned up 
under heap pressure and when the data is accessed again they need to be 
re-cached and add more heap pressure.

If we do not want to rock the boat now let's change them to soft refs, at least 
then we have some caching. Otherwise let's use strong refs.


> 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