[ 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)