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

Prevent GC with a Cross Repository shared blob provider configuration

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2021.35
    • Fix Version/s: 2023.0, 2021.37
    • Component/s: BlobManager, Core
    • Release Notes Summary:
      Immediate GC in case of multi-repository deployment with a custom Blob Dispatcher configuration is not supported
    • Tags:
    • Sprint:
      nxplatform #85, nxplatform #86
    • Story Points:
      3

      Description

      Following work done NXP-31594, the release notes states:

      WARNING: In case of multi-repository deployment with a custom Blob Dispatcher configuration, the Nuxeo platform cannot ascertain that each repository has its own different binary store path and binaries referenced in another repository may be deleted (see documentation). In that case, it is recommended to disable this feature with NXP-31794.

      As a matter of fact, when defining a multi repository config with a custom blob dispatcher like:

      <extension target="org.nuxeo.ecm.core.blob.BlobManager" point="configuration">
          <blobprovider name="first">
            <class&gt;org.nuxeo.ecm.core.blob.InMemoryBlobProvider</class&gt;
            <property name="path">first</property>
            <property name="emulateLocalFile">true</property>
          </blobprovider>
        </extension>
        <extension target="org.nuxeo.ecm.core.blob.DocumentBlobManager" point="configuration">
          <blobdispatcher>
            <property name="default">first</property>
          </blobdispatcher>
        </extension>
        <extension target="org.nuxeo.ecm.core.storage.mongodb.MongoDBRepositoryService" point="repository">
          <repository name="test2" label="MongoDB Repository 2">
            <changeTokenEnabled>${nuxeo.test.changetoken.enabled}</changeTokenEnabled>
            <fulltext disabled="${nuxeo.test.fulltext.disabled}"
                      storedInBlob="${nuxeo.test.fulltext.storedInBlob}"
                      searchDisabled="${nuxeo.test.fulltext.search.disabled}">
              <index name="title">
                <field>dc:title</field>
              </index>
            </fulltext>
          </repository>
        </extension>
      

      we end up with both repositories (test and test2) storing blobs in the same blob provider.

      In the documentation, we warn about not doing this kind of configuration. But we should add a check in our code to do not run Garbage Collection in that case.

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: