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

Refactor blob providers infrastructure for more flexibility

    XMLWordPrintable

    Details

    • Type: New Feature
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 10.10-HF21, 11.1, 2021.0
    • Component/s: BlobManager
    • Impact type:
      API change
    • Upgrade notes:
      Hide

      New implementation of BlobProvider:

      • org.nuxeo.ecm.core.blob.LocalBlobProvider

      They have the same configuration properties as the old ones, with additions. The XML configuration can now also include:

      • <property name="record">true</property>: to activate Record mode (see NXP-27435). This mode is also transactional.
      • <property name="transactional">true</property>: to activate transactional mode independently of the record mode (useful for other features like Glacier).
      Show
      New implementation of BlobProvider : org.nuxeo.ecm.core.blob.LocalBlobProvider They have the same configuration properties as the old ones, with additions. The XML configuration can now also include: <property name="record">true</property> : to activate Record mode (see NXP-27435 ). This mode is also transactional. <property name="transactional">true</property> : to activate transactional mode independently of the record mode (useful for other features like Glacier).
    • Sprint:
      nxFG 11.1.11

      Description

      We need to refactor some blob providers (and old-style binary managers) to have more flexibility when combining them:

      • making them transactional (needed for S3 retention (NXP-27435) and Glacier),
      • adding a caching layer,
      • allowing direct deletion,
      • changing the digest computation for keys into something based on doc or blob info,
      • passing down more information to the storage layer (S3 metadata (NXP-25712)),
      • avoid temporary files when streaming decrypted binaries (TL-318).

      This ticket covers new implementations, whose behavior are a superset of the old ones (which are kept of course):

      New Old
      org.nuxeo.ecm.core.blob.InMemoryBlobProvider (various mocks)
      org.nuxeo.ecm.core.blob.LocalBlobProvider org.nuxeo.ecm.core.blob.binary.DefaultBinaryManager
      org.nuxeo.ecm.blob.s3.S3BlobProvider org.nuxeo.ecm.core.storage.sql.S3BinaryManager

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 2 weeks
                  2w