[ 
https://issues.apache.org/jira/browse/HTTPASYNC-13?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuri updated HTTPASYNC-13:
--------------------------

    Description: 
I am using httpasyncclient to download many files assynchronously. Each 
download get's a unique temp file. For some of the download in the series this 
is what I see:

00:36:00.343 |-ERROR [I/O dispatcher 3] [   c.b.q.h.HttpDownloader] - Could not 
download http://www.bmf.com.br/Ftp/ContratosPregaoFinal/BF120104.ex_
java.io.IOException: FileChannel.size() [13534] < position [130834].  Please 
grow the file before writing.
        at 
org.apache.http.impl.nio.codecs.LengthDelimitedDecoder.transfer(LengthDelimitedDecoder.java:145)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.nio.client.methods.ZeroCopyConsumer.onContentReceived(ZeroCopyConsumer.java:75)
 ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.consumeContent(AbstractAsyncResponseConsumer.java:67)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.consumeContent(DefaultAsyncRequestDirector.java:329)
 ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.nio.protocol.HttpAsyncClientProtocolHandler.inputReady(HttpAsyncClientProtocolHandler.java:226)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.client.LoggingClientProtocolHandler.inputReady(LoggingClientProtocolHandler.java:98)
 [httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:175)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:118)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:49)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160) 
[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106) 
[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:599)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at java.lang.Thread.run(Thread.java:680) [na:1.6.0_29]


This is what I am doing:


                HttpAsyncRequestProducer download = 
HttpAsyncMethods.createGet(uri);
                getHttpClient().execute(download, new 
ZeroCopyConsumer<Void>(file) {
                                // overridden failed() and process()
                }


And the response is coming with an explicit Content-Length header, which seems 
to make the framework select the LengthDelimitedDecoder to decode the response. 
Now even if the server is reporting a wrong length in Content-Length, shouldnt 
the httpasyncclient simply produce a file of that size (even if not the 
complete file)? 

Could this be caused by the server reporting the wrong length? In any case, it 
seems that the code should never throw an exception here. It should 

  was:
I am using httpasyncclient to download many files assynchronously. Each 
download get's a unique temp file. For some of the download in the series this 
is what I see:

00:36:00.343 |-ERROR [I/O dispatcher 3] [   c.b.q.h.HttpDownloader] - Could not 
download http://www.bmf.com.br/Ftp/ContratosPregaoFinal/BF120104.ex_
java.io.IOException: FileChannel.size() [13534] < position [130834].  Please 
grow the file before writing.
        at 
org.apache.http.impl.nio.codecs.LengthDelimitedDecoder.transfer(LengthDelimitedDecoder.java:145)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.nio.client.methods.ZeroCopyConsumer.onContentReceived(ZeroCopyConsumer.java:75)
 ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.consumeContent(AbstractAsyncResponseConsumer.java:67)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.consumeContent(DefaultAsyncRequestDirector.java:329)
 ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.nio.protocol.HttpAsyncClientProtocolHandler.inputReady(HttpAsyncClientProtocolHandler.java:226)
 ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.client.LoggingClientProtocolHandler.inputReady(LoggingClientProtocolHandler.java:98)
 [httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
        at 
org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:175)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:118)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:49)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160) 
[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106) 
[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at 
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:599)
 [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
        at java.lang.Thread.run(Thread.java:680) [na:1.6.0_29]


This is what I am doing:


                HttpAsyncRequestProducer download = 
HttpAsyncMethods.createGet(uri);
                getHttpClient().execute(download, new 
ZeroCopyConsumer<Void>(file) {
                                // overridden failed() and process()
                }


    
> java.io.IOException: FileChannel.size() [13534] < position [130834].  Please 
> grow the file before writing.
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HTTPASYNC-13
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-13
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.0-alpha3
>         Environment: OSX Leopard 64 bits, Java 1.6.
>            Reporter: Yuri
>
> I am using httpasyncclient to download many files assynchronously. Each 
> download get's a unique temp file. For some of the download in the series 
> this is what I see:
> 00:36:00.343 |-ERROR [I/O dispatcher 3] [   c.b.q.h.HttpDownloader] - Could 
> not download http://www.bmf.com.br/Ftp/ContratosPregaoFinal/BF120104.ex_
> java.io.IOException: FileChannel.size() [13534] < position [130834].  Please 
> grow the file before writing.
>       at 
> org.apache.http.impl.nio.codecs.LengthDelimitedDecoder.transfer(LengthDelimitedDecoder.java:145)
>  ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.nio.client.methods.ZeroCopyConsumer.onContentReceived(ZeroCopyConsumer.java:75)
>  ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
>       at 
> org.apache.http.nio.protocol.AbstractAsyncResponseConsumer.consumeContent(AbstractAsyncResponseConsumer.java:67)
>  ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.client.DefaultAsyncRequestDirector.consumeContent(DefaultAsyncRequestDirector.java:329)
>  ~[httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
>       at 
> org.apache.http.nio.protocol.HttpAsyncClientProtocolHandler.inputReady(HttpAsyncClientProtocolHandler.java:226)
>  ~[httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.client.LoggingClientProtocolHandler.inputReady(LoggingClientProtocolHandler.java:98)
>  [httpasyncclient-4.0-alpha3.jar:4.0-alpha3]
>       at 
> org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:175)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:118)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.DefaultClientIODispatch.onInputReady(DefaultClientIODispatch.java:49)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:599)
>  [httpcore-nio-4.2-alpha2.jar:4.2-alpha2]
>       at java.lang.Thread.run(Thread.java:680) [na:1.6.0_29]
> This is what I am doing:
>               HttpAsyncRequestProducer download = 
> HttpAsyncMethods.createGet(uri);
>               getHttpClient().execute(download, new 
> ZeroCopyConsumer<Void>(file) {
>                               // overridden failed() and process()
>               }
> And the response is coming with an explicit Content-Length header, which 
> seems to make the framework select the LengthDelimitedDecoder to decode the 
> response. Now even if the server is reporting a wrong length in 
> Content-Length, shouldnt the httpasyncclient simply produce a file of that 
> size (even if not the complete file)? 
> Could this be caused by the server reporting the wrong length? In any case, 
> it seems that the code should never throw an exception here. It should 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to