dev@grizzly.java.net

Re: stacktrace while doing an ab

From: Jeanfrancois Arcand <Jeanfrancois.Arcand_at_Sun.COM>
Date: Mon, 30 Mar 2009 09:11:06 -0400

Salut,

rama wrote:
> probably this is of no-use, but is quite strange.
>
> using 1.9.10 release, i was testing the statistics with the sample class
> as, related to
> https://grizzly.dev.java.net/issues/show_bug.cgi?id=376 issue.
>
> So, i have simply execute the class, using a directory that actually exist.
>
> After that, with firefox, i have get the index.html just to be sure that
> it's working well.
> On firefox i get the correct output, of a simple html page.

What kind of corruption? Half a page or something like that?


>
> After that i have do
> ab -c 10 -n 1000 http://localhost:8080/index.html
>
> Concurrency Level: 10
> Time taken for tests: 0.491 seconds
> Complete requests: 1000
> Failed requests: 0
> Broken pipe errors: 0
> Total transferred: 1534533 bytes
> HTML transferred: 1411410 bytes
> Requests per second: 2036.66 [#/sec] (mean)
> Time per request: 4.91 [ms] (mean)
> Time per request: 0.49 [ms] (mean, across all concurrent requests)
> Transfer rate: 3125.32 [Kbytes/sec] received
>
> This, for me, means that all the request was completed correctly. (boken
> pipe is 0, and failed is 0, also html transferred is correct)
>
> At the end of AB, the console show this stack trace.

Yes this is expected. ab close the connection before the server has the
time to write the last "chunk". I think we should increase the log level
to prevent confusion.

>
> Since i am doing this test (for statistics) in the same way of always (i
> wasn't able to use stats, this is way i always try it)
> and, this is the 1st time that i get this stack trace, maybe will be
> useful to report it to community!
>
>

This is great report. Can you file an issue? On my side I will take a look!

Thanks!

-- Jeanfrancois



>
>
>
>
> GRAVE: HTTP Processing error
> _java.io.IOException_: Broken pipe
> at sun.nio.ch.FileDispatcher.write0(_Native Method_)
> at sun.nio.ch.SocketDispatcher.write(_SocketDispatcher.java:29_)
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(_IOUtil.java:104_)
> at sun.nio.ch.IOUtil.write(_IOUtil.java:60_)
> at sun.nio.ch.SocketChannelImpl.write(_SocketChannelImpl.java:302_)
> at
> sun.nio.ch.FileChannelImpl.transferToTrustedChannel(_FileChannelImpl.java:450_)
> at sun.nio.ch.FileChannelImpl.transferTo(_FileChannelImpl.java:521_)
> at
> com.sun.grizzly.http.SocketChannelOutputBuffer.sendFile(_SocketChannelOutputBuffer.java:341_)
> at
> com.sun.grizzly.tcp.StaticResourcesAdapter.service(_StaticResourcesAdapter.java:217_)
> at
> com.sun.grizzly.tcp.StaticResourcesAdapter.service(_StaticResourcesAdapter.java:139_)
> at
> com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(_GrizzlyAdapter.java:123_)
> at
> com.sun.grizzly.http.ProcessorTask.invokeAdapter(_ProcessorTask.java:726_)
> at com.sun.grizzly.http.ProcessorTask.doProcess(_ProcessorTask.java:615_)
> at com.sun.grizzly.http.ProcessorTask.process(_ProcessorTask.java:895_)
> at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(_DefaultProtocolFilter.java:162_)
> at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(_DefaultProtocolChain.java:136_)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(_DefaultProtocolChain.java:103_)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(_DefaultProtocolChain.java:89_)
> at
> com.sun.grizzly.http.HttpProtocolChain.execute(_HttpProtocolChain.java:76_)
> at
> com.sun.grizzly.ProtocolChainContextTask.doCall(_ProtocolChainContextTask.java:67_)
> at
> com.sun.grizzly.SelectionKeyContextTask.call(_SelectionKeyContextTask.java:57_)
> at java.util.concurrent.FutureTask$Sync.innerRun(_FutureTask.java:269_)
> at java.util.concurrent.FutureTask.run(_FutureTask.java:123_)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(_ThreadPoolExecutor.java:650_)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(_ThreadPoolExecutor.java:675_)
> at java.lang.Thread.run(_Thread.java:613_)
>