hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yuri (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HTTPASYNC-13) java.io.IOException: FileChannel.size() [13534] < position [130834]. Please grow the file before writing.
Date Sun, 05 Feb 2012 06:16:53 GMT

     [ 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message