Maven 2.2 has switched to HTTPClient - does that fix this for you?

On 17/06/2009, at 7:26 PM, TP - Allan Frank wrote:

Hi

While trying out a few new repositories, we were http uploading artifacts to the repository. This works fine as long as the artifact size is less than half the Xmx memory setting on the JVM that does the uploading. If the artifact is larger than that, the upload fails with a OutOfMemoryException. Given that we can allocate no more than about 1200MB for a JVM, this translates to a maximum artifact size of 600MB.

Our largest artifact at the moment is 1,8GB, which we normally deploy using a UNC path (file://\\server\path).

Researching the issue, it seems that the sun implementation (sun.net.www.protocol.http.HttpURLConnection ) will<http://www.protocol.http.HttpURLConnection)%20will> store the artifact in memory before uploading it to the repository unless chunk encoding or content length is set. Theory is that the 1/2 factor comes from the way memory allocation is expanded in the PosterOutputStream.

To fix this we tried to set the length of the artifact into the LightweightHttpWagon fillOutputData() method but this breaks a lot of tests because of the way authentication is implemented;

1. Artifact is posted without Authentication header
2. Server replies with 401 denied
3. Artiact is posted again with Authentication header

However, when setting the content length causes the HTTPURLConnection to NOT try again with Authentication header (step 3), thereby breaking all cases where repository requires authentication.

Any idea of how this can be solved?

It seems a bit wasteful that artifact is posted twice in case of authentication is required. If authentication is set, should it not be set on the first request?

Any help on this would be greatly appreciated.

Thanks,

/Allan


---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-dev-unsubscr...@maven.apache.org
For additional commands, e-mail: wagon-dev-h...@maven.apache.org

Reply via email to