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)