[
https://issues.apache.org/jira/browse/HTTPASYNC-13?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13200814#comment-13200814
]
Yuri commented on HTTPASYNC-13:
-------------------------------
It happens all the time here but I would need some time to create a testcase I
can attach here.
Another piece of info is that I am taking a 1 year interval command and
executing as hundreds of individual download executions, one for each trading
day, in one shot on a dual-core CPU (MacBook Pro) and let the httpasyncclient
asynchronously catch up with the downloads. While executing the batch of
downloads I see many that work and many that fail with the above error.
> 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.blah.com/files/file20110101.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]