Batch uploads fail in nuxeo 8.1 - how can I fix it?

I'm trying to upload some videos via the import dialogue. In this case it were 4 videos (each of them 500 Mb). 3 uploads are running in parallel via the webinterface in Chrome (48.0). But after clicking the import button and waiting some time the following error notification appears “A problem occurred during import.”

2016-03-01 17:15:29,156 ERROR [http-bio-0.0.0.0-8080-exec-35] [org.nuxeo.ecm.automation.server.jaxrs.batch.BatchManagerComponent] Error while executing automation batch
org.nuxeo.ecm.automation.TraceException:

****** chain ******
Name: FileManager.ImportWithMetaDataInSeam
Exception: OperationException
Caught error: Failed to invoke operation FileManager.Import
Caused by: org.nuxeo.ecm.core.api.PropertyException: Cannot get blob info for: org.nuxeo.ecm.core.api.impl.blob.FileBlob@c4f28ed2
****** Hierarchy calls ******
        org.nuxeo.ecm.automation.core.operations.services.FileManagerImport

        at org.nuxeo.ecm.automation.core.impl.OperationServiceImpl.run(OperationServiceImpl.java:234)
        at org.nuxeo.ecm.automation.core.impl.OperationServiceImpl.run(OperationServiceImpl.java:117)
        at org.nuxeo.ecm.automation.server.jaxrs.batch.BatchManagerComponent.execute(BatchManagerComponent.java:285)
        at org.nuxeo.ecm.automation.server.jaxrs.batch.BatchManagerComponent.execute(BatchManagerComponent.java:251)
        at org.nuxeo.ecm.webapp.action.ImportActions.importDocumentsThroughBatchManager(ImportActions.java:295)
        at org.nuxeo.ecm.webapp.action.ImportActions.importDocuments(ImportActions.java:247)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
        at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
        at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:79)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.nuxeo.ecm.platform.ui.web.util.NuxeoExceptionInterceptor.aroundInvoke(NuxeoExceptionInterceptor.java:80)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
        at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
        at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
        at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196)
        at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:114)
        at org.nuxeo.ecm.webapp.action.ImportActions_$$_javassist_seam_23.importDocuments(ImportActions_$$_javassist_seam_23.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
        at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:280)
        at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59)
        at org.jboss.el.parser.AstMethodSuffix.invoke(AstMethodSuffix.java:65)
        at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
        at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
        at org.nuxeo.ecm.platform.ui.web.binding.MetaMethodExpression.invoke(MetaMethodExpression.java:106)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        at javax.faces.component.UICommand.broadcast(UICommand.java:315)
        at org.nuxeo.ecm.platform.ui.web.binding.alias.UIAliasHolder.broadcast(UIAliasHolder.java:113)
        at org.nuxeo.ecm.platform.ui.web.component.holder.UIValueHolder.broadcast(UIValueHolder.java:95)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
        at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.nuxeo.elasticsearch.web.sync.UIThreadMarker.doFilter(UIThreadMarker.java:48)
        at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
        at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoThreadTrackerFilter.doFilter(NuxeoThreadTrackerFilter.java:43)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.core.management.jtajca.internal.Log4jWebFilter.doFilter(Log4jWebFilter.java:69)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.ui.web.rest.FancyURLFilter.doFilter(FancyURLFilter.java:120)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.mobile.filter.ApplicationRedirectionFilter.doNoRedirect(ApplicationRedirectionFilter.java:165)
        at org.nuxeo.ecm.mobile.filter.ApplicationRedirectionFilter.doFilter(ApplicationRedirectionFilter.java:95)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoRequestControllerFilter.doFilter(NuxeoRequestControllerFilter.java:142)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.webdav.service.WIRequestFilter.doFilter(WIRequestFilter.java:61)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:586)
        at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:51)
        at org.nuxeo.ecm.platform.ui.web.auth.oauth.NuxeoOAuthFilter.doFilter(NuxeoOAuthFilter.java:122)
        at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
        at org.nuxeo.ecm.platform.ui.web.auth.oauth2.NuxeoOAuth2Filter.doFilter(NuxeoOAuth2Filter.java:83)
        at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
        at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilter(NuxeoAuthenticationFilter.java:399)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:208)
        at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:274)
        at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoCorsFilter.doFilter(NuxeoCorsFilter.java:49)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.web.common.exceptionhandling.NuxeoExceptionFilter.doFilter(NuxeoExceptionFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.nuxeo.ecm.platform.web.common.encoding.NuxeoEncodingFilter.doFilter(NuxeoEncodingFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.nuxeo.ecm.automation.OperationException: Failed to invoke operation FileManager.Import
        at org.nuxeo.ecm.automation.core.impl.InvokableMethod.invoke(InvokableMethod.java:189)
        at org.nuxeo.ecm.automation.core.impl.CompiledChainImpl.doInvoke(CompiledChainImpl.java:130)
        at org.nuxeo.ecm.automation.core.impl.CompiledChainImpl.invoke(CompiledChainImpl.java:116)
        at org.nuxeo.ecm.automation.core.impl.OperationServiceImpl.run(OperationServiceImpl.java:210)
        ... 115 more
Caused by: org.nuxeo.ecm.core.api.PropertyException: Cannot get blob info for: org.nuxeo.ecm.core.api.impl.blob.FileBlob@c4f28ed2
        at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:626)
        at org.nuxeo.ecm.core.storage.BaseDocument$BlobWriteContext.flush(BaseDocument.java:729)
        at org.nuxeo.ecm.core.api.DocumentModelFactory.writeDocumentModel(DocumentModelFactory.java:247)
        at org.nuxeo.ecm.core.api.AbstractSession.writeModel(AbstractSession.java:366)
        at org.nuxeo.ecm.core.api.AbstractSession.createDocument(AbstractSession.java:694)
        at org.nuxeo.ecm.platform.filemanager.service.extension.AbstractFileImporter.create(AbstractFileImporter.java:236)
        at org.nuxeo.ecm.platform.filemanager.service.FileManagerService.createDocumentFromBlob(FileManagerService.java:225)
        at org.nuxeo.ecm.automation.core.operations.services.FileManagerImport.run(FileManagerImport.java:73)
        at org.nuxeo.ecm.automation.core.operations.services.FileManagerImport.run(FileManagerImport.java:81)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.nuxeo.ecm.automation.core.impl.InvokableMethod.doInvoke(InvokableMethod.java:171)
        at org.nuxeo.ecm.automation.core.impl.InvokableMethod.invoke(InvokableMethod.java:177)
        ... 118 more
Caused by: java.io.FileNotFoundException: /mnt/data/DAM-Data01/nuxeo/nxserver/data/transientstores/default/YmF0Y2hJZC1lNzc2OTMzZi04MzYwLTRjZTYtYjYxMi0zYmFhYjUyYzFmZWZfMg==/005c707b-b2bb-4e46-adeb-1194b3250998 (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at org.nuxeo.ecm.core.api.impl.blob.FileBlob.getStream(FileBlob.java:169)
        at org.nuxeo.ecm.core.blob.binary.AbstractBinaryManager.getBinary(AbstractBinaryManager.java:96)
        at org.nuxeo.ecm.core.blob.binary.DefaultBinaryManager.getBinary(DefaultBinaryManager.java:50)
        at org.nuxeo.ecm.core.blob.binary.BinaryBlobProvider.writeBlob(BinaryBlobProvider.java:97)
        at org.nuxeo.ecm.core.blob.BlobManagerComponent.writeBlob(BlobManagerComponent.java:281)
        ... 132 more

So it seems that the files get deleted after the upload. Single file uploads work though. Is there some setting to control the cleanup of the tmp folder? Or any other hint on tracing the cause of this issue are highly appreciated.

edit: Clustering is not enabled

##-----------------------------------------------------------------------------
## Clustering settings
##-----------------------------------------------------------------------------
#repository.clustering.enabled=false
#repository.clustering.delay=1000
#repository.binary.store=/path/to/some/shared/folder/for/binaries

Thanks. Stefan

0 votes

1 answers

2828 views

ANSWER



Hi,

Is your Nuxeo configured in cluster?

If this is the case you need to follow the instructions given on this page: https://doc.nuxeo.com/display/ADMINDOC/Nuxeo+Clustering+Configuration#NuxeoClusteringConfiguration-TransientStore

0 votes



No, we don't use the clustering. I left the default clustering settings commented out in the nuxeo.conf file.
03/01/2016

After the drag and drop of the 4 video files, for how long approximately are you waiting before you get the error?
03/01/2016

After clicking the import button nuxeo is working for up to 10 minutes until the import screen goes away. Then the message is displayed.
03/02/2016

I tried uploading via curl and API as described in https://doc.nuxeo.com/display/NXDOC/Blob+Upload+for+Batch+Processing … But unfortunately this fails too.

The initial call curl -X POST 'http://nuxeo:8080/nuxeo/api/v1/upload/' -u 'Administrator:***' works and I recieve a batch ID: {"batchId":"batchId-92d944dc-6d5a-4502-9959-78c9f2d0eeb0"} …

The second call with the actual upload fails though: curl –verbose –progress-bar -u 'Administrator:***' -H "X-File-Name:video.mp4" -H "X-File-Type:video/mp4" -F file=@Video.mp4 'http://nuxeo:8080/nuxeo/api/v1/upload/batchId-92d944dc-6d5a-4502-9959-78c9f2d0eeb0/0' -o output.txt … Send failure: Connection reset by peer * Closing connection 0

Uploading small files works though. So it's not the call itself. I don't see any specific settings to check.

03/03/2016

This fails after how long? Are there errors server-side?
03/03/2016

Hi, after reviewing the upload issues we see 4 different scenarios with cap 8.1

  1. An immediate fail to the curl calls with massive files (e.g. 9 GB video). No upload is started as the connection is reset immediately. I see no errors on the server when this happens.

  2. Create a video document via New -> Video in a workspace. In Chrome I see that the video is uploaded and I get to a waiting for nuxeo response. After some minutes I get to an error page stating the document does not exist. In this case I see an error in the log:

2016-03-03 21:10:21,088 WARN [Quartz_Worker-1] [org.nuxeo.ecm.core.event.impl.PostCommitEventExecutor] Events postcommit execution exceeded timeout of 300ms, leaving thread running 2016-03-03 21:26:01,493 WARN [http-bio-0.0.0.0-8080-exec-149] [org.jboss.seam.jsf.SeamPhaseListener] uncaught exception, passing to exception handler java.lang.IllegalStateException: Could not commit transaction

at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:629)
at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:608)
at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(SeamPhaseListener.java:344)
at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:244)
at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:195)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:107)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.nuxeo.elasticsearch.web.sync.UIThreadMarker.doFilter(UIThreadMarker.java:48)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoThreadTrackerFilter.doFilter(NuxeoThreadTrackerFilter.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.core.management.jtajca.internal.Log4jWebFilter.doFilter(Log4jWebFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.ui.web.rest.FancyURLFilter.doFilter(FancyURLFilter.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoRequestControllerFilter.doFilter(NuxeoRequestControllerFilter.java:142)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.webdav.service.WIRequestFilter.doFilter(WIRequestFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:586)
at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:51)
at org.nuxeo.ecm.platform.ui.web.auth.oauth.NuxeoOAuthFilter.doFilter(NuxeoOAuthFilter.java:122)
at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
at org.nuxeo.ecm.platform.ui.web.auth.oauth2.NuxeoOAuth2Filter.doFilter(NuxeoOAuth2Filter.java:83)
at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilter(NuxeoAuthenticationFilter.java:399)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:208)
at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:274)
at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoCorsFilter.doFilter(NuxeoCorsFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.web.common.exceptionhandling.NuxeoExceptionFilter.doFilter(NuxeoExceptionFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.nuxeo.ecm.platform.web.common.encoding.NuxeoEncodingFilter.doFilter(NuxeoEncodingFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

Caused by: javax.transaction.RollbackException: Unable to commit: Transaction timeout

at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:267)
at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
at org.nuxeo.runtime.jtajca.NuxeoContainer$UserTransactionImpl.commit(NuxeoContainer.java:547)
at org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:52)
at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:617)
... 72 more
  1. If I upload multiple videos via the Import button, I receive the error mentioned in the initial post. The files are uploaded I get to the waiting for nuxeo state and then I see the notifications messages (but no error page).

  2. When I upload files via curl to the old automation/batch/upload api call the files are uploaded correctly to nuxeo's tmp folder. I can verify the batch content via the corresponding API call. Unfortunately there the file is removed from the tmp folder when I create a document and attach the batch.

This occurs both on the Oracle Linux VM and a plain Ubuntu 14.04 installation.

03/03/2016

Please see also the detailed curl output for the difference in the successful small and big video uploads. The strange thing is the 404 not found on the big file upload.

curl –verbose –progress-bar -u 'Administrator:***' -H "X-File-Name:big.mp4" -H "X-File-Type:video/mp4" -F file=@big.mp4 'http://127.0.0.1:8080/nuxeo/api/v1/upload/batchId-b671cb7c-62c8-40b8-b318-9b761282c06f/0' -o output.txt

  • About to connect() to 127.0.0.1 port 8080 (#0)
  • Trying 127.0.0.1…
  • Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
  • Server auth using Basic with user 'Administrator' > POST /nuxeo/api/v1/upload/batchId-b671cb7c-62c8-40b8-b318-9b761282c06f/0 HTTP/1.1 > Authorization: Basic QWRtaW5pc3RyYXRvcjpfbWR3REFNRG01NVJ0Njc= > User-Agent: curl/7.29.0 > Host: 127.0.0.1:8080 > Accept: / > X-File-Name:big.mp4 > X-File-Type:video/mp4 > Content-Length: 9009078502 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=—————————-77f803038e93 > < HTTP/1.1 100 Continue } [data not shown]
                                                                       0.0%&lt; HTTP/1.1 404 Not Found
    
    < Server: Apache-Coyote/1.1 < X-UA-Compatible: IE=10; IE=11 < Content-Length: 0 < Date: Thu, 03 Mar 2016 21:13:52 GMT < Connection: close <
  • we are done reading and this is set to close, stop send
  • Closing connection 0

$ curl –verbose –progress-bar -u 'Administrator:***' -H "X-File-Name:small.mp4" -H "X-File-Type:video/mp4" -F file=@small.mp4 'http://127.0.0.1:8080/nuxeo/api/v1/upload/batchId-b671cb7c-62c8-40b8-b318-9b761282c06f/0' -o output.txt

  • About to connect() to 127.0.0.1 port 8080 (#0)
  • Trying 127.0.0.1…
  • Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
  • Server auth using Basic with user 'Administrator' > POST /nuxeo/api/v1/upload/batchId-b671cb7c-62c8-40b8-b318-9b761282c06f/0 HTTP/1.1 > Authorization: Basic QWRtaW5pc3RyYXRvcjpfbWR3REFNRG01NVJ0Njc= > User-Agent: curl/7.29.0 > Host: 127.0.0.1:8080 > Accept: / > X-File-Name:small.mp4 > X-File-Type:video/mp4 > Content-Length: 111088402 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=—————————-cd6dbc9a7784 > < HTTP/1.1 100 Continue } [data not shown]
    100.0%< HTTP/1.1 201 Created
    < Server: Apache-Coyote/1.1 < X-UA-Compatible: IE=10; IE=11 < Content-Type: text/html;charset=UTF-8 < Content-Length: 152 < Date: Thu, 03 Mar 2016 21:14:57 GMT < { [data not shown]
    100.0%* Connection #0 to host 127.0.0.1 left intact
03/03/2016

Uploads in the UI still fail with "Processing of multipart/form-data request failed. Stream ended unexpectedly" errors.

After compiling the latest curl version the verbose output on the failed big video upload differs. The connection rest in the end is the same though. Small videos work:

/usr/local/bin/curl –verbose -u 'Administrator:***' -H "X-File-Name:big.mp4" -H "X-File-Type:video/mp4" -F file=@big.mp4 'http://127.0.0.1:8080/nuxeo/api/v1/upload/batchId-20ed1253-d06e-467f-8497-50d98c177b3a/0' -o output.txt

  • About to connect() to 127.0.0.1 port 8080 (#0)
  • Trying 127.0.0.1… % Total % Received % Xferd Average Speed Time Time Time Current
                             Dload  Upload   Total   Spent    Left  Speed
    
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
  • Server auth using Basic with user 'Administrator' > POST /nuxeo/api/v1/upload/batchId-20ed1253-d06e-467f-8497-50d98c177b3a/0 HTTP/1.1 > Authorization: Basic QWRtaW5pc3RyYXRvcjpfbWR3REFNRG01NVJ0Njc= > User-Agent: curl/7.47.1 > Host: 127.0.0.1:8080 > Accept: / > X-File-Name:big.mp4 > X-File-Type:video/mp4 > Content-Length: 9009078502 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=—————————-939beec3ff9e > < HTTP/1.1 100 Continue } [154 bytes data] < HTTP/1.1 201 Created < Server: Apache-Coyote/1.1 < X-UA-Compatible: IE=10; IE=11 < Content-Type: application/json;charset=UTF-8 < Content-Length: 131 < Date: Mon, 07 Mar 2016 16:16:23 GMT < { [131 bytes data]
  • Send failure: Connection reset by peer 0 8591M 100 131 0 2096k 4793 74.9M 0:01:54 –:–:– 0:01:54 75.8M
  • Closing connection 0 curl: (55) Send failure: Connection reset by peer

/usr/local/bin/curl –verbose -u 'Administrator:***' -H "X-File-Name:small.mp4" -H "X-File-Type:video/mp4" -F file=@small.mp4 'http://127.0.0.1:8080/nuxeo/api/v1/upload/batchId-20ed1253-d06e-467f-8497-50d98c177b3a/0' -o output.txt

  • About to connect() to 127.0.0.1 port 8080 (#0)
  • Trying 127.0.0.1… % Total % Received % Xferd Average Speed Time Time Time Current
                             Dload  Upload   Total   Spent    Left  Speed
    
    0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
  • Server auth using Basic with user 'Administrator' > POST /nuxeo/api/v1/upload/batchId-20ed1253-d06e-467f-8497-50d98c177b3a/0 HTTP/1.1 > Authorization: Basic QWRtaW5pc3RyYXRvcjpfbWR3REFNRG01NVJ0Njc= > User-Agent: curl/7.47.1 > Host: 127.0.0.1:8080 > Accept: / > X-File-Name:small.mp4 > X-File-Type:video/mp4 > Content-Length: 111088402 > Expect: 100-continue > Content-Type: multipart/form-data; boundary=—————————-45660b93c50a > < HTTP/1.1 100 Continue } [153 bytes data] 100 105M 0 0 100 105M 0 6761k 0:00:16 0:00:16 –:–:– 4012k< HTTP/1.1 201 Created < Server: Apache-Coyote/1.1 < X-UA-Compatible: IE=10; IE=11 < Content-Type: text/html;charset=UTF-8 < Content-Length: 152 < Date: Mon, 07 Mar 2016 16:16:53 GMT < { [152 bytes data] 100 105M 100 152 100 105M 9 6723k 0:00:16 0:00:16 –:–:– 2708k
  • Connection #0 to host 127.0.0.1 left intact
03/07/2016

Hi, thanks for all these details.

About the curl call this is in fact a bug I've just fixed that was preventing from uploading files larger than 2 GB (in fact precisely the maximum value of a Java Integer: 2147483647 bytes). See https://jira.nuxeo.com/browse/NXP-19152 for the fix, will be available in 8.2.

I will now look at the issues visible through the UI: Import and New Video buttons.

03/08/2016

Thanks for the curl check.

Regarding the webinterface: I have changed the following settings but the strange "Stream ended unexpectedly" remain.

nuxeo.jsf.tmp.dir=/mnt/data/DAM-Data01/nuxeo/nxserver/jsftmp nuxeo.jsf.maxFileSize=-1 nuxeo.jsf.maxRequestSize=-1 nuxeo.jsf.fileSizeThreshold=0

nuxeo.db.transactiontimeout=15000 org.nuxeo.dnd.upload.timeout=30000000000 org.nuxeo.dnd.exec.timeout=30000000000

I'm currently testing some ipv6 change related issues too right now.

03/08/2016

Increasing nuxeo.db.transactiontimeout should definitely work for the New Video case (stack clearly shows "Unable to commit: Transaction timeout") and is required for the Import button as well.

I cannot reproduce the first case mentioned in the initial post in quite the same conditions.

"Stream ended unexpectedly" sounds like a network issue, lost network for example. If you have made some changes regarding ipv6 it might indeed be related…

03/08/2016