I'm trying to determine if there are any known issues using an Async servlet 
with the default BIO connector in Tomcat 7.0.40 on windows server 2008.

PROBLEM:
We have a situation where we're occasionally getting a deadlock (according to 
Java Melody).  When this happens, it's just a matter of time until all the 
threads in the connector's internal pool are exhausted because browser-based 
clients continue to make calls on this async servlet - effectively polling for 
work.

QUESTION:
I'm in the process of going through the stacks and code, but I'm not well 
versed in the async servlet code (which is mostly from the Vysper project), so 
I'm trying to figure out if the underlying AsyncContext.dispatch usage is a 
problem [at least when used with BIO].

Given the 3 stacks below, I'd greatly appreciate it if someone who understands 
the Async servlet plumbing might be able to take a quick look and see if 
anything stands out that could be the cause.  If you need any additional 
information, please let me know.

Thanks,
Bob


DEADLOCKED STACK INFORMATION

Warning, the following threads are deadlocked : 
http-bio-192.168.230.133-443-exec-1329, http-bio-192.168.230.133-443-exec-685, 
http-bio-192.168.230.133-443-exec-687

"http-bio-192.168.230.133-443-exec-685" daemon prio=5 BLOCKED
       
org.apache.tomcat.util.net.JIoEndpoint.processSocketAsync(JIoEndpoint.java:556)
       
org.apache.coyote.http11.Http11Processor.actionInternal(Http11Processor.java:365)
       
org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:848)
       org.apache.coyote.Request.action(Request.java:344)
       
org.apache.catalina.core.AsyncContextImpl.dispatch(AsyncContextImpl.java:222)
       
org.apache.catalina.core.AsyncContextImpl.dispatch(AsyncContextImpl.java:181)
       
org.apache.catalina.core.AsyncContextImpl.dispatch(AsyncContextImpl.java:175)
       
org.apache.vysper.xmpp.extension.xep0124.BoshBackedSessionContext.write0(BoshBackedSessionContext.java:251)
       
org.apache.vysper.xmpp.extension.xep0124.BoshHandler.terminateSession(BoshHandler.java:237)
       
org.apache.vysper.xmpp.extension.xep0124.BoshHandler.processSession(BoshHandler.java:228)
       
org.apache.vysper.xmpp.extension.xep0124.BoshHandler.process(BoshHandler.java:192)
       
org.apache.vysper.xmpp.extension.xep0124.BoshSaxContentHandler.emitStanza(BoshSaxContentHandler.java:90)
       
org.apache.vysper.xmpp.extension.xep0124.BoshSaxContentHandler.endElement(BoshSaxContentHandler.java:78)
       org.apache.vysper.xml.sax.impl.XMLParser.endElement(XMLParser.java:480)
       org.apache.vysper.xml.sax.impl.XMLParser.token(XMLParser.java:227)
       org.apache.vysper.xml.sax.impl.XMLTokenizer.emit(XMLTokenizer.java:154)
       org.apache.vysper.xml.sax.impl.XMLTokenizer.parse(XMLTokenizer.java:108)
       org.apache.vysper.xml.sax.impl.XMLParser.parse(XMLParser.java:121)
       
org.apache.vysper.xml.sax.impl.DefaultNonBlockingXMLReader.parse(DefaultNonBlockingXMLReader.java:185)
       
org.apache.vysper.xmpp.extension.xep0124.BoshDecoder.decode(BoshDecoder.java:81)
       
com.thingworx.xmpp.vysper.extensions.xep0124.ThingworxBoshServlet.doPost(ThingworxBoshServlet.java:176)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
       net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
com.thingworx.security.filter.AuthenticationFilter.propagateRequest(AuthenticationFilter.java:279)
       
com.thingworx.security.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:150)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
       
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
       
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
       
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
       
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
       org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
       
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
       
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
       
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
       
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
       
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
       java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       java.lang.Thread.run(Unknown Source)

"http-bio-192.168.230.133-443-exec-687" daemon prio=5 BLOCKED
       
org.apache.vysper.xmpp.extension.xep0124.BoshBackedSessionContext.requestExpired(BoshBackedSessionContext.java:479)
       
org.apache.vysper.xmpp.extension.xep0124.BoshBackedSessionContext.access$000(BoshBackedSessionContext.java:49)
       
org.apache.vysper.xmpp.extension.xep0124.BoshBackedSessionContext$1.onTimeout(BoshBackedSessionContext.java:669)
       
org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:45)
       
org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:151)
       
org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:293)
       
org.apache.coyote.http11.AbstractHttp11Processor.asyncDispatch(AbstractHttp11Processor.java:1568)
       
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:583)
       
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
       java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       java.lang.Thread.run(Unknown Source)

"http-bio-192.168.230.133-443-exec-1329" daemon prio=5 BLOCKED
       
org.apache.vysper.xmpp.extension.xep0124.BoshHandler.process(BoshHandler.java:160)
       
org.apache.vysper.xmpp.extension.xep0124.BoshSaxContentHandler.emitStanza(BoshSaxContentHandler.java:90)
       
org.apache.vysper.xmpp.extension.xep0124.BoshSaxContentHandler.endElement(BoshSaxContentHandler.java:78)
       org.apache.vysper.xml.sax.impl.XMLParser.endElement(XMLParser.java:480)
       org.apache.vysper.xml.sax.impl.XMLParser.token(XMLParser.java:227)
       org.apache.vysper.xml.sax.impl.XMLTokenizer.emit(XMLTokenizer.java:154)
       org.apache.vysper.xml.sax.impl.XMLTokenizer.parse(XMLTokenizer.java:108)
       org.apache.vysper.xml.sax.impl.XMLParser.parse(XMLParser.java:121)
       
org.apache.vysper.xml.sax.impl.DefaultNonBlockingXMLReader.parse(DefaultNonBlockingXMLReader.java:185)
       
org.apache.vysper.xmpp.extension.xep0124.BoshDecoder.decode(BoshDecoder.java:81)
       
com.thingworx.xmpp.vysper.extensions.xep0124.ThingworxBoshServlet.doPost(ThingworxBoshServlet.java:176)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
       net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
com.thingworx.security.filter.AuthenticationFilter.propagateRequest(AuthenticationFilter.java:279)
       
com.thingworx.security.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:150)
       
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
       
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
       
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
       
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
       
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
       org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
       
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
       
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
       
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
       
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
       
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
       java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       java.lang.Thread.run(Unknown Source)


Bob DeRemer
Senior Director, Architecture and Development

[Description: Description: Description: Description: 
cid:image001.png@01CBE3DE.51A12030]
http://www.thingworx.com<http://www.thingworx.com/>
Skype: bob.deremer.thingworx
O: 610.594.6200 x812
M: 717.881.3986

Reply via email to