Michael Dürig created OAK-1639:
----------------------------------

             Summary: 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
             Fix For: 1.0


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