[
https://issues.apache.org/jira/browse/WAGON-518?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16444572#comment-16444572
]
Chris Lott commented on WAGON-518:
----------------------------------
Latest workaround: use LightweightHttpWagon which does not override the
putFromStream() method. Got tripped up by a null-pointer exception so now I set
the authenticator field as shown below, please advise on correct usage.
{code:java}
LightweightHttpWagon lw = new LightweightHttpWagon();
lw.setAuthenticator(new LightweightHttpWagonAuthenticator());
{code}
> AbstractHttpClientWagon#putFromStream reads entire content to memory
> --------------------------------------------------------------------
>
> Key: WAGON-518
> URL: https://issues.apache.org/jira/browse/WAGON-518
> Project: Maven Wagon
> Issue Type: Bug
> Components: wagon-http
> Affects Versions: 2.12
> Reporter: Chris Lott
> Priority: Major
>
> Method putFromSteam in class AbstractHttpClientWagon seems to violate the
> implied contract of working with streams. It uses much memory because it
> first consumes the input stream argument, then transfers that content. The
> code that consumes the stream is in the private class
> RequestEntityImplementation ctor:
> {code:java}
> byte[] bytes = IOUtil.toByteArray( stream );{code}
> Please revise it, if possible, to behave more like the superclass
> StreamWagon's putFromStream method, which does the transfer straight from the
> input stream.
> We are attempting to PUT some 150MB artifacts in a java microservice that
> runs with rather sharp memory limits. As a local workaround we increased the
> JVM's -Xmx argument but that way lies madness.
> Thanks in advance for any suggestions or workarounds.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)