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

JSF Bulk Import hangs on File Drop when SQLKeyValueStore enabled

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 9.10
    • Fix Version/s: 9.10-HF30
    • Component/s: Key/Value Store
    • Release Notes Summary:
      JSF Bulk Import works with SQL KeyValue store.
    • Tags:
    • Backlog priority:
      1,000
    • Sprint:
      nxFG 11.1.4

      Description

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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 15 minutes
                  15m