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

S3 binary cache must be multi-threaded

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 5.6
    • Fix Version/s: 5.6.0-HF18, 5.7.1
    • Component/s: None
    • Tags:

      Description

      The binary cache used by the S3 binary manager has a synchronized block which prevents any cache read while a binary is being fetched from S3. Remove it.

      Thread doing actual work (usually waiting for network reads):

          ...
          at com.amazonaws.services.s3.AmazonS3EncryptionClient.getObject(AmazonS3EncryptionClient.java:287)
          at org.nuxeo.ecm.core.storage.sql.S3BinaryManager$S3BinaryFileCache.fetchFile(S3BinaryManager.java:354)
          at org.nuxeo.ecm.core.storage.sql.BinaryFileCache.getFile(BinaryFileCache.java:144)
          - locked <0x0000000681cfa590> (a org.nuxeo.ecm.core.storage.sql.S3BinaryManager$S3BinaryFileCache)
          at org.nuxeo.ecm.core.storage.sql.BinaryCachingManager.getBinary(BinaryCachingManager.java:34)
          at org.nuxeo.ecm.core.storage.sql.jdbc.dialect.Dialect.getFromResultSetString(Dialect.java:293)
          ...
      

      The others threads are blocked by it:

        java.lang.Thread.State: BLOCKED (on object monitor)
          at org.nuxeo.ecm.core.storage.sql.BinaryFileCache.getFile(BinaryFileCache.java:135)
          - waiting to lock <0x0000000681cfa590> (a org.nuxeo.ecm.core.storage.sql.S3BinaryManager$S3BinaryFileCache)
          at org.nuxeo.ecm.core.storage.sql.BinaryCachingManager.getBinary(BinaryCachingManager.java:34)
          at org.nuxeo.ecm.core.storage.sql.jdbc.dialect.Dialect.getFromResultSetString(Dialect.java:293)
          ...
      

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: