Large file download error

595 views
Skip to first unread message

Dave H

unread,
Jan 24, 2018, 5:59:29 PM1/24/18
to Nexus Users
I am getting a fairly repeatable error download a 2.4GB file from a raw Nexus repository.  The complicating factor is that I am reaching Nexus via an HTTPS Google L7 load balancer which hits nginx and then Nexus.  When I reach Nexus via a direct HTTP backdoor, this error does not happen.

The error from curl (on Ubuntu) looks like this:

```curl: (56) GnuTLS recv error (-110): The TLS connection was non-properly terminated.```

So while I don't *think* this is a Nexus issue, I thought I would post here to see if anyone has any ideas.

The download fails around 2GB with Nexus reporting the following:

2018-01-24 21:07:48,907+0000 WARN [qtp898726587-2916] builder org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Failure servicing: GET /repository/binaries/IBM/clm/6.0.3/JTS-CCM-QM-RM-JRS-RELM-repo-6.0.3.zip
org.eclipse.jetty.io.EofException: null
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:199)
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:420)
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:313)
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:147)
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:745)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:519)
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:737)
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:788)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:235)
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:219)


....
Caused by: java.io.IOException: Broken pipe
	at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
	at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
	at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
	at sun.nio.ch.IOUtil.write(IOUtil.java:51)
	at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
	at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:177)
	... 89 common frames omitted


I can't imagine why downloading a large file over an HTTPS Load Balancer would cause Nexus to report a broken pipe.

Any ideas?


Rich Seddon

unread,
Jan 24, 2018, 6:33:45 PM1/24/18
to Nexus Users
The nexus logs indicate that it was writing content, and the socket was closed by the remote.

The "around 2Gb" is somewhat suspicious.   Is there a maximum request size configured in the load balancer?

Brian Fox

unread,
Jan 24, 2018, 6:44:25 PM1/24/18
to Rich Seddon, Nexus Users
I’ve seen this either be a size limit or a timeout depending on the proxy in front of nexus.

--Brian (mobile)

--
You received this message because you are subscribed to the Google Groups "Nexus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nexus-users...@glists.sonatype.com.
To post to this group, send email to nexus...@glists.sonatype.com.
To view this discussion on the web visit https://groups.google.com/a/glists.sonatype.com/d/msgid/nexus-users/4328966b-11a2-4ca2-b42f-0db8db757cdd%40glists.sonatype.com.
For more options, visit https://groups.google.com/a/glists.sonatype.com/d/optout.

Dave H

unread,
Jan 25, 2018, 9:46:23 AM1/25/18
to Nexus Users
Rich,

I see that now -- the call to WriteFlusher.flush

So it is writing to the socket when it was closed on the reading side.  I get it.

This gives me a good place to start looking. 

Thanks,
Dave

Dave H

unread,
Jan 25, 2018, 9:48:41 AM1/25/18
to Nexus Users, rse...@sonatype.com
I will look into that.  For what its worth the timeout seems to be happening at random intervals between 30 seconds and 3 minutes.  The partially download artifact is anywhere from about 500MB to about 2GB in size.

It may be a faulty health check on the load balancer in Google, but I will check for timeouts too.
Reply all
Reply to author
Forward
0 new messages