Can't upload large jar?

Hi there,

I’m trying to upload a jar to my update site.
It’s a big jar because it contains some OS specific executable (57Mb).

I had no problem to send it to my update site before, but it seems there is a problem with the https switch.

Always at the same progress (around 50%) I have this message :

[ERROR] null
org.apache.http.client.ClientProtocolException
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at net.imagej.plugins.uploaders.webdav.WebDAVUploader.runMethodOnClient(WebDAVUploader.java:525)
	at net.imagej.plugins.uploaders.webdav.WebDAVUploader.upload(WebDAVUploader.java:287)
	at net.imagej.plugins.uploaders.webdav.WebDAVUploader.upload(WebDAVUploader.java:231)
	at net.imagej.updater.FilesUploader.upload(FilesUploader.java:260)
	at net.imagej.ui.swing.updater.UpdaterFrame.upload(UpdaterFrame.java:805)
	at net.imagej.ui.swing.updater.UpdaterFrame$5$1.run(UpdaterFrame.java:311)
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:107)
	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
	... 8 more
Caused by: java.net.SocketException: Software caused connection abort: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(Unknown Source)
	at java.net.SocketOutputStream.write(Unknown Source)
	at sun.security.ssl.OutputRecord.writeBuffer(Unknown Source)
	at sun.security.ssl.OutputRecord.write(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.writeRecordInternal(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
	at sun.security.ssl.AppOutputStream.write(Unknown Source)
	at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:126)
	at org.apache.http.impl.io.SessionOutputBufferImpl.flushBuffer(SessionOutputBufferImpl.java:138)
	at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:169)
	at org.apache.http.impl.io.ChunkedOutputStream.flushCacheWithAppend(ChunkedOutputStream.java:124)
	at org.apache.http.impl.io.ChunkedOutputStream.write(ChunkedOutputStream.java:181)
	at net.imagej.plugins.uploaders.webdav.ProgressHttpEntityWrapper$ProgressFilterOutputStream.write(ProgressHttpEntityWrapper.java:108)
	at org.apache.http.entity.InputStreamEntity.writeTo(InputStreamEntity.java:146)
	at net.imagej.plugins.uploaders.webdav.ProgressHttpEntityWrapper.writeTo(ProgressHttpEntityWrapper.java:90)
	at org.apache.http.impl.execchain.RequestEntityProxy.writeTo(RequestEntityProxy.java:123)
	at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:158)
	at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:162)
	at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:237)
	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:122)
	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
	... 10 more

I guess it is a server side error, it is possible to check ?

Best regards,

Salim

It’s a timeout—so a problem with the actual transfer. It’s related to the connectivity between your machine and the sites.imagej.net machine.

Here is the relevant line from the server’s error log:

[Thu Aug 22 09:22:02.786057 2019] [dav:error] [pid 107272] (70007)The timeout specified has expired: [client 194.167.140.1:64902] Timeout reading the body (URI: /Nuclear-Medicine/plugins/Orthanc_tools.jar-20190822162119)  [408, #0]

Looking at the relevant code, I see that @frauzufall recently overhauled this logic:

Is it possible you are using an old version of imagej-plugins-uploader-webdav? If so, please try with 0.3.1. It should be enough to update your Fiji. (It is always best practice to update your Fiji fully before attempting to upload anything!)

Dear Curtis,

I regularly update my Fiji.
I have checked, I’m up to date with the 0.3.1 WebDAV library.

If you want to try to see if you can reproduce the issue I put the jar here : https://we.tl/t-KzHup1oDu4

Best regards,

Salim

2 Likes

I made a mesurement, the error occurs around 40 secs after uplodad started

Hi @Salim_Kanoun,

thanks for reporting and providing detailed information about the issue. I’ll try to reproduce it, I set the timeouts way higher and tested with bigger files but maybe I missed something.

One more question, did you upload via HTTPS? Can you set your update site URL manually to HTTP and see if there’s a difference?

Best,
Debo

1 Like

I get the same timeout error with HTTPS, with HTTP it works. So as a workaround you can upload via HTTP, but I’ll investigate why this fails now.

EDIT: I created an issue to discuss this further. Will post back here once this is solved.

2 Likes

We adjusted the server configuration and my tests run successfully. Let me know if you are still experiencing issues.

1 Like