-
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:
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) ...