-
Type: Bug
-
Status: Resolved
-
Priority: Blocker
-
Resolution: Fixed
-
Affects Version/s: 9.10
-
Fix Version/s: 9.10-HF30
-
Component/s: Key/Value Store
Environment:
- Nuxeo version: 9.10-HF28 w/embedded services and JSF
- KeyValueBlobTransientStore enabled for all transient stores using custom descriptor
- SQLKeyValueStore configured for all kv stores using custom descriptor
Steps to reproduce:
- Create a test Folder within a test Workspace
- Select (Bulk) Import JSF action
- Drag&Drop small file to Files widget
Expected Result: "File" box within Files widget is enabled as is the Import action button
Actual Result:
- "File" box within Files widget remains disabled as does the Import action button
- JStack displays "stuck" http-nio-127.0.0.1-8080-exec-20 thread as listed below. It appears the for loop within KeyValueBlobTransientStore.atomicUpdate() is stuck on line 301 with the following invocation:
kvs.compareAndSet(key: "__blobsize__", oldValue: "0", "newValue: "2785", ttl: 0) // kvs: "SQLKeyValueStore(BatchManagerCache)"
Full JStack trace:
java.lang.Thread.State: RUNNABLE at java.lang.Throwable.fillInStackTrace(Native Method) at java.lang.Throwable.fillInStackTrace(Throwable.java:783) - lock <0x00000000ee82ff98> (a java.lang.Exception) at java.lang.Throwable.<init>(Throwable.java:265) at java.lang.Exception.<init>(Exception.java:66) at org.apache.geronimo.connector.outbound.ConnectionInfo.setTrace(ConnectionInfo.java:119) at org.apache.geronimo.connector.outbound.ConnectionHandleInterceptor.getConnection(ConnectionHandleInterceptor.java:57) at org.apache.geronimo.connector.outbound.TCCLInterceptor.getConnection(TCCLInterceptor.java:39) at org.apache.geronimo.connector.outbound.ConnectionTrackingInterceptor.getConnection(ConnectionTrackingInterceptor.java:66) at org.apache.geronimo.connector.outbound.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:77) at org.nuxeo.runtime.jtajca.NuxeoContainer$ConnectionManagerWrapper.allocateConnection(NuxeoContainer.java:764) at org.tranql.connector.jdbc.TranqlDataSource.getConnection(TranqlDataSource.java:64) at org.nuxeo.runtime.datasource.PooledDataSourceFactory$1NuxeoDataSource.getConnection(PooledDataSourceFactory.java:95) at org.nuxeo.runtime.datasource.ConnectionHelper.getConnection(ConnectionHelper.java:96) at org.nuxeo.runtime.datasource.ConnectionHelper.getConnection(ConnectionHelper.java:82) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore.getConnection(SQLKeyValueStore.java:378) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore.lambda$runWithConnection$2(SQLKeyValueStore.java:369) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore$$Lambda$1817/1174369967.get(Unknown Source) at org.nuxeo.runtime.transaction.TransactionHelper.runWithoutTransaction(TransactionHelper.java:528) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore.runWithConnection(SQLKeyValueStore.java:368) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore.compareAndSet(SQLKeyValueStore.java:758) at org.nuxeo.ecm.core.storage.sql.kv.SQLKeyValueStore.compareAndSet(SQLKeyValueStore.java:754) at org.nuxeo.ecm.core.transientstore.keyvalueblob.KeyValueBlobTransientStore.atomicUpdate(KeyValueBlobTransientStore.java:301) at org.nuxeo.ecm.core.transientstore.keyvalueblob.KeyValueBlobTransientStore.addStorageSize(KeyValueBlobTransientStore.java:207) at org.nuxeo.ecm.core.transientstore.keyvalueblob.KeyValueBlobTransientStore.putBlobs(KeyValueBlobTransientStore.java:443) at org.nuxeo.ecm.automation.server.jaxrs.batch.Batch.addFile(Batch.java:219) at org.nuxeo.ecm.restapi.server.jaxrs.BatchUploadObject.addBlob(BatchUploadObject.java:303) at org.nuxeo.ecm.restapi.server.jaxrs.BatchUploadObject.uploadNoTransaction(BatchUploadObject.java:254) at org.nuxeo.ecm.restapi.server.jaxrs.BatchUploadObject.upload(BatchUploadObject.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) ...