Rishabh Daim created OAK-12134:
----------------------------------

             Summary: tail compaction produces more data now
                 Key: OAK-12134
                 URL: https://issues.apache.org/jira/browse/OAK-12134
             Project: Jackrabbit Oak
          Issue Type: Bug
    Affects Versions: 1.88.0
            Reporter: Rishabh Daim
            Assignee: Julian Sedding
             Fix For: 2.0.0


The cleanup behavior is identical on both branches 1.78 & 1.88 
Both show 0 bytes in post-compaction cleanup. That was never the real 
difference.

  The actual regression is in compaction itself:

  
┌────────────────────────────┬─────────────────────┬──────────────────────────┐
  │           Metric           │      1.78 GC#3      │        1.88 GC#3         
│
  
├────────────────────────────┼─────────────────────┼──────────────────────────┤
  │ Compaction time            │ 2.4s (3 cycles)     │ 35.4s (6 cycles + force) 
│
  
├────────────────────────────┼─────────────────────┼──────────────────────────┤
  │ Data written by compaction │ ~65 MB (489→554 MB) │ ~800 MB (511→1300 MB)    
│
  
├────────────────────────────┼─────────────────────┼──────────────────────────┤
  │ Initial checkpoints        │ ~66                 │ ~46                      
│
  
├────────────────────────────┼─────────────────────┼──────────────────────────┤
  │ Force compact needed       │ No                  │ Yes                      
│
  
└────────────────────────────┴─────────────────────┴──────────────────────────┘

  1.88 writes 12x more data during compaction despite having fewer checkpoints. 
That's the smoking gun.

  Root cause: OAK-11895

  The CheckpointCompactor change (onto vs after) modified what paths get 
compacted per checkpoint:

  - 1.78 (old): collectSuperRootPaths returns "root" and "checkpoints/X/root" — 
only compacts the repository root and each checkpoint's content root
  - 1.88 (new): returns "" and "checkpoints/X" — compacts the entire super-root 
and the full checkpoint subtree (including metadata, not just the root)

  More paths traversed per checkpoint → more nodes copied → more segments 
written → more data produced.

  This has a cascading effect: more data written means compaction takes longer, 
which means more concurrent commits happen during compaction, which means more 
retry cycles, which eventually forces a blocking
  compaction.

  Summary

  The problem is not "cleanup doesn't reclaim space" — cleanup works 
identically on both branches. The problem is that 1.88 TAIL compaction produces 
~12x more output data than 1.78 due to OAK-11895, causing the
  store to grow significantly after each GC cycle instead of shrinking. This is 
worth raising as a regression against OAK-11895 in Apache JIRA.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to