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

Fix random convert related tests

    XMLWordPrintable

    Details

    • Type: Task
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2025.x
    • Component/s: Convert, Tests
    • Release Notes Summary:
      Convert Cache configuration has been improved
    • Tags:
    • Upgrade notes:
      Hide

      The convert cache contribution has changed, you need to migrate your contributions to the extension point org.nuxeo.ecm.core.convert.service.ConversionServiceImpl-configuration.
      For example, see below an old contribution:

        <extension target="org.nuxeo.ecm.core.convert.service.ConversionServiceImpl" point="configuration">
          <configuration>
            <enableCache>true</enableCache>
            <cachingDirectory>/tmp/nuxeo-convert-cache</cachingDirectory>
            <gcInterval>10</gcInterval>
            <diskCacheSize>10240</diskCacheSize>
          </configuration>
        </extension>
      

      That will be converted to:

        <extension target="org.nuxeo.ecm.core.convert.service.ConversionServiceImpl" point="configuration">
          <cache enabled="true">
            <directory>/tmp/nuxeo-convert-cache</directory>
            <gcRate>10m</gcRate>
            <maxSize>10240</maxSize>
          </configuration>
        </extension>
      
      Show
      The convert cache contribution has changed, you need to migrate your contributions to the extension point org.nuxeo.ecm.core.convert.service.ConversionServiceImpl-configuration . For example, see below an old contribution: <extension target= "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl" point= "configuration" > <configuration> <enableCache> true </enableCache> <cachingDirectory>/tmp/nuxeo-convert-cache</cachingDirectory> <gcInterval>10</gcInterval> <diskCacheSize>10240</diskCacheSize> </configuration> </extension> That will be converted to: <extension target= "org.nuxeo.ecm.core.convert.service.ConversionServiceImpl" point= "configuration" > <cache enabled= " true " > <directory>/tmp/nuxeo-convert-cache</directory> <gcRate>10m</gcRate> <maxSize>10240</maxSize> </configuration> </extension>
    • Team:
      PLATFORM
    • Sprint:
      nxplatform #118
    • Story Points:
      2

      Description

      The test TestRenditionPublication#shouldPublishAPDFRendition seems to have become random since NXP-32696, it is failing with the following error:

      org.nuxeo.ecm.core.api.PropertyException: Cannot get blob info for: org.nuxeo.ecm.core.api.impl.blob.FileBlob@f3c74658
      	at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:706)
      	at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:691)
      	at org.nuxeo.ecm.core.storage.BaseDocument$BlobWriteContext.flush(BaseDocument.java:841)
      	at org.nuxeo.ecm.core.api.DocumentModelFactory.writeDocumentModel(DocumentModelFactory.java:247)
      	at org.nuxeo.ecm.core.api.AbstractSession.writeModel(AbstractSession.java:409)
      	at org.nuxeo.ecm.core.api.AbstractSession.writeModel(AbstractSession.java:405)
      	at org.nuxeo.ecm.core.api.AbstractSession.saveDocument(AbstractSession.java:1731)
      	at org.nuxeo.ecm.platform.rendition.service.RenditionCreator.run(RenditionCreator.java:121)
      	at org.nuxeo.ecm.core.api.UnrestrictedSessionRunner.runUnrestricted(UnrestrictedSessionRunner.java:112)
      	at org.nuxeo.ecm.platform.rendition.service.DefaultStoredRenditionManager.createStoredRendition(DefaultStoredRenditionManager.java:37)
      	at org.nuxeo.ecm.platform.rendition.service.RenditionServiceImpl.storeRendition(RenditionServiceImpl.java:211)
      	at org.nuxeo.ecm.platform.rendition.service.RenditionServiceImpl.getRendition(RenditionServiceImpl.java:320)
      	at org.nuxeo.ecm.platform.rendition.service.RenditionServiceImpl.getRendition(RenditionServiceImpl.java:283)
      	at org.nuxeo.ecm.platform.rendition.publisher.RenditionPublicationFactory.publishDocument(RenditionPublicationFactory.java:62)
      	at org.nuxeo.ecm.platform.publisher.api.AbstractBasePublicationTree.publish(AbstractBasePublicationTree.java:131)
      	at org.nuxeo.ecm.platform.publisher.impl.core.SectionPublicationTree.publish(SectionPublicationTree.java:100)
      	at org.nuxeo.ecm.platform.rendition.publisher.TestRenditionPublication.shouldPublishAPDFRendition(TestRenditionPublication.java:156)
      	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$BeforeMethodRunStatement.evaluate(FeaturesRunner.java:450)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$BeforeSetupStatement.evaluate(FeaturesRunner.java:464)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner.evaluateRunnable(FeaturesRunner.java:321)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$AfterMethodRunStatement.evaluate(FeaturesRunner.java:486)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner.evaluateRunnable(FeaturesRunner.java:321)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$AfterTeardownStatement.evaluate(FeaturesRunner.java:499)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$RulesFactory$1.evaluate(FeaturesRunner.java:569)
      	at org.nuxeo.runtime.test.runner.ConditionalIgnoreRule$2.evaluate(ConditionalIgnoreRule.java:168)
      	at org.nuxeo.runtime.test.runner.RuntimeDeployment$DeploymentStatement.evaluate(RuntimeDeployment.java:293)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
      	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$AfterClassStatement.evaluate(FeaturesRunner.java:397)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$RulesFactory$1.evaluate(FeaturesRunner.java:569)
      	at org.nuxeo.runtime.test.runner.FeaturesRunner$BeforeClassStatement.evaluate(FeaturesRunner.java:380)
      	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
      	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
      	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
      	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
      	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
      Caused by: java.io.FileNotFoundException: /home/jenkins/workspace/nuxeo_lts_nuxeo_PR-2089/modules/platform/nuxeo-platform-rendition/nuxeo-platform-rendition-publisher/target-mongodb/nxruntime-main-11877737967750149863.tmp/data/convertcache/YW/55/Mn/Bk/Zj/ab4b769c4fd46052810aa67e72251342 (No such file or directory)
      	at java.base/java.io.FileInputStream.open0(Native Method)
      	at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
      	at java.base/java.io.FileInputStream.<init>(FileInputStream.java:152)
      	at org.nuxeo.ecm.core.api.impl.blob.FileBlob.getStream(FileBlob.java:183)
      	at org.nuxeo.ecm.core.blob.BlobWriteContext.getStream(BlobWriteContext.java:83)
      	at org.nuxeo.ecm.core.blob.AbstractBlobStore.transfer(AbstractBlobStore.java:297)
      	at org.nuxeo.ecm.core.blob.AbstractBlobStore.transfer(AbstractBlobStore.java:286)
      	at org.nuxeo.ecm.core.blob.LocalBlobStore.write(LocalBlobStore.java:101)
      	at org.nuxeo.ecm.core.blob.LocalBlobStore.writeBlobGeneric(LocalBlobStore.java:80)
      	at org.nuxeo.ecm.core.blob.AbstractBlobStore.writeBlob(AbstractBlobStore.java:124)
      	at org.nuxeo.ecm.core.blob.AbstractBlobStore.writeBlob(AbstractBlobStore.java:115)
      	at org.nuxeo.ecm.core.blob.BlobStoreBlobProvider.writeBlob(BlobStoreBlobProvider.java:131)
      	at org.nuxeo.ecm.core.blob.DocumentBlobManagerComponent.writeBlob(DocumentBlobManagerComponent.java:256)
      	at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:704)
      	... 55 more
      

      One culprit could be the the converter GC thread that cleanup the blob after the rendition service retrive it and before it consumes it.

      One possible solution is to disable the converter GC thread for tests.

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: