Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-32061

Fix incremental Blob GC when async digest is enabled

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2023.0, 2021.35
    • Fix Version/s: 2021.45, 2023.4
    • Component/s: BlobManager, Core
    • Release Notes Summary:
      In case of async digest computation, the old blob is not garbage collected by the regular GC
    • Release Notes Description:
      Hide

      A new boolean parameter is available in the setBlob method of low-level documents to not garbage collect old blob references if any. This parameter is leveraged when replacing the blob digest which only occurs when asynchronous blob digest is enabled.

      The asynchronous blob digest computation keeps handling the old blob deletion later on through the org.nuxeo.ecm.core.blob.BlobDeleteListener.

      Show
      A new boolean parameter is available in the setBlob method of low-level documents to not garbage collect old blob references if any. This parameter is leveraged when replacing the blob digest which only occurs when asynchronous blob digest is enabled. The asynchronous blob digest computation keeps handling the old blob deletion later on through the org.nuxeo.ecm.core.blob.BlobDeleteListener .
    • Backlog priority:
      950
    • Team:
      PLATFORM
    • Sprint:
      nxplatform #97, nxplatform #98
    • Story Points:
      5

      Description

      When async digest computation (NXP-30044) is enabled with

      nuxeo.core.blobstore.digestAsync=true
      

      The new incremental GC introduced by NXP-31594 may result in conversions/extraction work failing.

      Scenario:

      • Upload a blob and create a document with such blob attached as the main file. The current blob key is not yet a digest and the Nuxeo document references it as is.
      • Async ComputeDigest work is scheduled and eventually started
      • Other async work such conversions are scheduled and started pointing to a blob of which the key is not a digest
      • ComputeDigest work eventually ends, copies the blob with its new digest key
        and updates the blob property of the document accordingly
      • The incremental GC is triggered and deletes the unreferenced blob (the one of which the key was not a digest)
      • The previously started conversion work fails because the blob was deleted

      Temporary workaround

      Disable GC with:

      nuxeo.bulk.action.blobGC.enabled=false 
      

      see NXP-31794

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: