Hello all ,
i have some problem using the HttpClient protocol handlers from 2.0.0 M1 (from
5/12/2007) .
i'm creating a kind of HTTP load tool which have around 10 threads using 1000
and more connections
to send HTTP request at a fixed rate (xxx TPS)
on low/medium traffic there is now problem but on high TPS rates when using
multible connections i get
decode errors like :
2007-12-06 19:45:17,390|main|WARN |minaHTTPLoad.run(39)|banging
2007-12-06
19:45:20,723|pool-4-thread-1|ERROR|HTTPAgent.exceptionCaught(59)|error
:Unsupported HTTP version: (Hexdump: 00 A1 00 00 00 00 00 80 80 80 BF ... )
at
org.apache.mina.filter.codec.http.HttpCodecUtils.throwDecoderException(HttpCodecUtils.java:156)
at
org.apache.mina.filter.codec.http.HttpVersionDecodingState$1.finishDecode(HttpVersionDecodingState.java:46)
at
org.apache.mina.filter.codec.statemachine.ConsumeToDynamicTerminatorDecodingState.decode(ConsumeToDynamicTerminatorDecodingState.java:83)
at
org.apache.mina.filter.codec.http.HttpVersionDecodingState.decode(HttpVersionDecodingState.java:62)
at
org.apache.mina.filter.codec.statemachine.DecodingStateMachine.decode(DecodingStateMachine.java:77)
....
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
the request i send is http://<server>/gif/l_arrow.gif
now from the hexdump it seems that the decoder is decoding the gif data as the
first HTTP response line.
i checked the communication with wireshark , and response of the apache server
was OK.
i use HTTP keep-alive .
i tried to "lock" the sending thread until the response of the previous request
was recieved. this helps a bit but there are still some Exceptions.
main disadvantage is ofcourse that it also "blocks" my thread so , NIO (non
blocking IO) is not really the case here.
Is this a know issue with the current MINA 2.0.0 code base ?
luc