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

Offline compaction cleanup failures for migrated AzureSegmentStores with missing graph files

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.44.0
    • 1.46.0
    • segment-azure, segment-tar
    • None

    Description

      There are cases in which the cleanup step in offline compaction fails for AzureSegmentStores migrated to their Tar counterpart and then compacted. This happens because some AzureSegmentStores are not correctly closed and as a result the graph file is missing for some archives. Moreover, it was observed that some stores contained old archives with a GCGeneration greater than that of the current head, making them (and the segments inside) unreclaimable.

      This improvement makes sure that all data segments coming from a generation greater than that of the root record are marked as collectable.

      Below an example stacktrace of the cleanup failure:

      INFO  [2022-06-13 03:43:04,814] org.apache.jackrabbit.oak.segment.file.FileStore: TarMK GC #0: cleanup started using reclaimer (full generation older than 1.1, with 1 retained generations)
      WARN  [2022-06-13 03:43:08,910] org.apache.jackrabbit.oak.segment.file.tar.GraphLoader: Invalid graph magic number
      WARN  [2022-06-13 03:43:13,498] org.apache.jackrabbit.oak.segment.file.tar.GraphLoader: Invalid graph magic number
      WARN  [2022-06-13 03:43:14,500] org.apache.jackrabbit.oak.segment.file.tar.GraphLoader: Invalid graph magic number
      WARN  [2022-06-13 03:43:16,608] org.apache.jackrabbit.oak.segment.file.tar.GraphLoader: Invalid graph magic number
      WARN  [2022-06-13 03:43:16,748] org.apache.jackrabbit.oak.segment.file.tar.GraphLoader: Invalid graph magic number
      INFO  [2022-06-13 03:43:17,124] org.apache.jackrabbit.oak.segment.file.FileStore: TarMK closed: /mnt/sandbox/tmp/1655089520931-0
      java.lang.NullPointerException
      	at org.apache.jackrabbit.oak.segment.file.tar.TarReader.getReferences(TarReader.java:328)
      	at org.apache.jackrabbit.oak.segment.file.tar.TarReader.mark(TarReader.java:417)
      	at org.apache.jackrabbit.oak.segment.file.tar.TarFiles.cleanup(TarFiles.java:690)
      	at org.apache.jackrabbit.oak.segment.file.DefaultCleanupStrategy.cleanup(DefaultCleanupStrategy.java:55)
      	at org.apache.jackrabbit.oak.segment.file.AbstractGarbageCollectionStrategy.cleanup(AbstractGarbageCollectionStrategy.java:155)
      	at org.apache.jackrabbit.oak.segment.file.AbstractGarbageCollectionStrategy.cleanup(AbstractGarbageCollectionStrategy.java:87)
      	at org.apache.jackrabbit.oak.segment.file.SynchronizedGarbageCollectionStrategy.cleanup(SynchronizedGarbageCollectionStrategy.java:73)
      	at org.apache.jackrabbit.oak.segment.file.GarbageCollector.cleanup(GarbageCollector.java:305)
      	at org.apache.jackrabbit.oak.segment.file.FileStore.cleanup(FileStore.java:419)
      	at org.apache.jackrabbit.oak.segment.tool.Compact.run(Compact.java:296)
      

      Attachments

        Issue Links

          Activity

            People

              adulceanu Andrei Dulceanu
              adulceanu Andrei Dulceanu
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: