users@glassfish.java.net

Re: Application server appears to hang with “Can not skip more bytes than available” exception

From: Oleksiy Stashok <oleksiy.stashok_at_oracle.com>
Date: Wed, 07 Mar 2012 11:01:08 +0100

Pls. file an issue, GF trunk (GF 4.0) is in active dev. phase so it's
not that stable.

WBR,
Alexey.

On 03/07/2012 01:45 AM, forums_at_java.net wrote:
> My application server sometimes appears to hang and can't handle any new
> request until I restart it.
> Sometimes I even can't stop the server and the only choice is killing the
> proccess.
> It happens randomly. Maybe 4 or 5 days once, maybe once or twice per day.
> I had tried to find out the reason with the log file. I found that almost
> everytime before the problem appeared, I got this exception:
>
> <code>
>
> [#|2012-03-05T16:07:44.289+0800|INFO|44.0|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=45;_ThreadName=Thread-2;|/app/nova/glassfish3/glassfish/domains/domain1/docroot/download|#]
>
> [#|2012-03-05T16:08:00.829+0800|WARNING|44.0|org.glassfish.grizzly.http.server.Request|_ThreadID=43;_ThreadName=Thread-2;|Exception
>
> occurred during body skip
> java.lang.IllegalStateException: Can not skip more bytes than available
> at
> org.glassfish.grizzly.http.server.io.InputBuffer.skip(InputBuffer.java:611)
>
> at
> org.glassfish.grizzly.http.server.Request.skipPostBody(Request.java:1881)
> at
> org.glassfish.grizzly.http.server.Request.parseRequestParameters(Request.java:1850)
>
> at
> org.glassfish.grizzly.http.server.Request.getParameterNames(Request.java:948)
>
> at
> org.apache.catalina.connector.Request.getParameterNames(Request.java:1379)
> at
> org.apache.catalina.connector.Request.getParameterMap(Request.java:1354)
> at
> org.apache.catalina.connector.RequestFacade.getParameterMap(RequestFacade.java:482)
>
> at
> org.apache.struts2.dispatcher.Dispatcher.createContextMap(Dispatcher.java:528)
>
> at
> org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:78)
>
> at
> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:78)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
>
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
>
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:284)
>
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
>
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
>
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
>
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
>
> at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:339)
>
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
>
> at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:172)
>
> at
> org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:163)
>
> at
> org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:161)
>
> at
> org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
>
> at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:286)
>
> at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:223)
>
> at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:155)
>
> at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:134)
>
> at
> org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:78)
> at
> org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:829)
>
> at
> org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:103)
>
> at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:111)
>
> at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
>
> at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:131)
>
> at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:508)
>
> at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:488)
>
> at java.lang.Thread.run(Thread.java:662)
> </code>
>
> What do you guys think about that? Is there any relationship between the
> problem and the exception?
> And i have googled this exception but found nothing, but just now i found
> this from the glassfish server site.
>
> [quote]
>
> >GlassFish/Grizzly not able to accept new request if a remote client
> hangs
> >(6963818) Description When closing an idle or expired connection,
> Grizzly
> >waits a period of time, called the linger time, for any pending data
> >transmission to complete. If the client on the connection is not network
> >accessible, GlassFish Server might appear to hang.
> >
> >Workaround Add the following JVM option to the configuration:
> >
> >-Dcom.sun.enterprise.web.connector.grizzly.linger=-1
> >
> [/quote]
>
> It may helps and i will have a try today.
>
> Any suggestion is welcome. Thanks in advance!
> By the way:
>
> 1) The application server is GlassFish Server Open Source Edition 4.0
> (build 18)
> 2) Operating system is Red Hat Enterprise Linux Server release 5.3
> (Santiago)
> 3) JRE is 6.0U27
>
>
>
>
> --
>
> [Message sent by forum member 'BlueMice']
>
> View Post: http://forums.java.net/node/884051
>
>