[ 
https://issues.apache.org/jira/browse/OAK-1639?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra resolved OAK-1639.
----------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 1.0)
                   0.20

All the issues raised have been fixed. MarkSweepGC now uses a constructor and a 
new instance is created for every GC call. The exceptions are properly logged 
and it now uses an external Executor for executing jobs.

Closing the issue 

> MarkSweepGarbageCollector improvements
> --------------------------------------
>
>                 Key: OAK-1639
>                 URL: https://issues.apache.org/jira/browse/OAK-1639
>             Project: Jackrabbit Oak
>          Issue Type: Task
>          Components: core
>            Reporter: Michael Dürig
>            Assignee: Chetan Mehrotra
>             Fix For: 0.20
>
>
> While reviewing the patch for OAK-1582 I stumbled over a few issues with 
> {{MarkSweepGarbageCollector}} that need improving. First an foremost 
> {{MarkSweepGarbageCollector}} needs better documentation. The current javadoc 
> as for many methods and arguments their semantics and invariants are unclear. 
> Furthermore:
> * {{MarkSweepGarbageCollector#init()}}: why an init method, and not pass the 
> respective arguments directly to the constructor? Also at when are clients 
> allowed to call init? Can I call it while a a GC cycle is currently taking 
> place? 
> * Is there (do we need) a protection for multiple GCs being initiated in 
> parallel?
> * {{MarkSweepGarbageCollector.Sweeper#run}} and 
> {{MarkSweepGarbageCollector.BlobIdRetriever#retrieve}} catch {{Exception}} 
> and {{e.printStackTrace()}}. This needs improving.
> * {{MarkSweepGarbageCollector#sweep}} catches 
> {{InterruptedExceptionInterruptedException}}  and {{e.printStackTrace()}. 
> This is wrong as at least the threads interrupted status need to be set.
> * {{DocumentNodeStore#getReferencedBlobsIterator}} is passed into 
> {{MarkSweepGarbageCollector#init)}} in {{DocumentNodeStoreService}}. Won't 
> this iterator be consumed after the first gc run such that any further run 
> won't do anything?
> [~amitj_76], could you have a look at these points and create sub tasks as 
> required?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to