[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] Brittle downloads

I think my problem (or at least part of it) stems from the fact that I don't include the Apache httpclient in my setup so I don't benefit from the automatic retries that apparently take place there but not in the standard URL connect.

- thomas

Henrik Lindberg wrote:
John,
perhaps a very simply workaround is to allow the timeout and retry to be set via properties.
 

On May 14, 2009, at 3:51 PM, John Arthorne wrote:


I think the deeper problem here is that this repository hasn't been configured with a mirrorsURL. I have entered this bug:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=276300

If mirrors were present you would get very different behaviour, since we retry once per available mirror. With no mirrors and a two minute timeout contacting the main server, I'm not sure we could do a lot better. Henrik described the problem very well - there is no perfect retry policy that makes sense for both headless builds and end users, so it's a difficult problem.




Thomas Hallgren <thomas@xxxxxxx>
Sent by: p2-dev-bounces@xxxxxxxxxxx

05/14/2009 03:40 AM

Please respond to
P2 developer discussions <p2-dev@xxxxxxxxxxx>

To
P2 developer discussions <p2-dev@xxxxxxxxxxx>
cc

Subject
[p2-dev] Brittle downloads







I know that there's been some improvements in this area since M7 which
I'm currently using but I thought I might ask anyway. What kind of
socket timeouts do we have and do we make any attempt to retry when a
socket timeout exception is thrown?

I tried installing the org.eclipse.platform feature several times. I
always ran into a SocketTimeoutException (see stacktrace below).
Apparently it tries to download the packed file first and then the jar
file. If neither succeeds, the installation fails. I first tried this on
my local machine. I almost always failed so I decided to move to
build.eclipse.org. As it turns out, it fails there too. So what's going
on here? Does it contact mirrors that fails or what?

I'm explicitly trying to install from
http://download.eclipse.org/eclipse/updates/3.5milestones/S-3.5M7-I200904302300.
Here's the stack-trace that I'm getting 7 times out of ten (the bundle
that failes question vary):

    [java] !MESSAGE Unable to read repository at
http://download.eclipse.org/eclipse/updates/3.5milestones/S-3.5M7-I200904302300/plugins/org.eclipse.update.ui_3.2.200.v20090213.jar.pack.gz.
    [java] !STACK 0
    [java] java.net.SocketTimeoutException: Read timed out
    [java]     at java.net.SocketInputStream.socketRead0(Native Method)
    [java]     at
java.net.SocketInputStream.read(SocketInputStream.java:155)
    [java]     at
java.io.BufferedInputStream.fill(BufferedInputStream.java:229)
    [java]     at
java.io.BufferedInputStream.read1(BufferedInputStream.java:267)
    [java]     at
java.io.BufferedInputStream.read(BufferedInputStream.java:324)
    [java]     at
sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:658)
    [java]     at
sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:607)
    [java]     at
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:966)
    [java]     at
org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.getDecompressedStream(UrlConnectionRetrieveFileTransfer.java:441)
    [java]     at
org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.openStreams(UrlConnectionRetrieveFileTransfer.java:285)
    [java]     at
org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:804)
    [java]     at
org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:502)
    [java]     at
org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:98)
    [java]     at
org.eclipse.equinox.internal.p2.repository.FileReader.sendRetrieveRequest(FileReader.java:251)
    [java]     at
org.eclipse.equinox.internal.p2.repository.FileReader.readInto(FileReader.java:200)
    [java]     at
org.eclipse.equinox.internal.p2.repository.RepositoryTransport.download(RepositoryTransport.java:69)
    [java]     at
org.eclipse.equinox.internal.p2.repository.RepositoryTransport.download(RepositoryTransport.java:113)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:472)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:455)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:522)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:200)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:175)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:159)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:95)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:511)
    [java]     at
org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:64)

- thomas
_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev

_______________________________________________
p2-dev mailing list
p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev


_______________________________________________ p2-dev mailing list p2-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/p2-dev