Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-1639

MarkSweepGarbageCollector improvements

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 0.20
    • core
    • None

    Description

      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?

      Attachments

        Activity

          People

            chetanm Chetan Mehrotra
            mduerig Michael Dürig
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: