What scenarios does QoQ create an exclusive lock?

14 views
Skip to first unread message

Rory

unread,
Feb 6, 2013, 7:03:47 PM2/6/13
to ra...@googlegroups.com
Hi All,

I'm trying to understand the scenarios in which QoQ will have an exclusive thread-blocking lock at the Java level. There are certain QoQs which appear to result in a wait at this section in the Railo source at line 322:


Can anyone with a better knowledge of Java/Railo perhaps explain what is going on here and what scenarios will cause the lock? Is it all QoQ will have an exclusive lock? In my testing it only appears to be QoQs that perform a join, aggregate or group by. More simple QoQ do not lock as far as I know, but that may be a false experiment on my part. 

sample thread dump of a blocked thread is below. I would like to better understand the limitations here, if any. 

Thanks!

-Rory

"ajp-bio-8009-exec-429" - Thread t@4237
   java.lang.Thread.State: BLOCKED
at railo.runtime.db.HSQLDBHandler.__execute(HSQLDBHandler.java:322)
- waiting to lock <34d9efea> (a railo.commons.lang.SerializableObject) owned by "ajp-bio-8009-exec-415" t@4176
at railo.runtime.db.HSQLDBHandler._execute(HSQLDBHandler.java:310)
at railo.runtime.db.HSQLDBHandler.execute(HSQLDBHandler.java:299)
at railo.runtime.tag.Query.executeQoQ(Query.java:607)
at railo.runtime.tag.Query.doEndTag(Query.java:445)
at core.views.main.apptest_cfm$cf.call(/var/www/affiliates/public/core/views/main/apptest.cfm:17)
at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:771)
at railo.runtime.PageContextImpl.doInclude(PageContextImpl.java:746)
at corfield.framework_cfc$cf._7(/var/www/fw1/org/corfield/framework.cfc:1368)
at corfield.framework_cfc$cf.udfCall(/var/www/fw1/org/corfield/framework.cfc)
at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215)
at railo.runtime.type.UDFImpl._call(UDFImpl.java:434)
at railo.runtime.type.UDFImpl.call(UDFImpl.java:384)
at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:738)
at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1480)
at corfield.framework_cfc$cf._4(/var/www/fw1/org/corfield/framework.cfc:665)
at corfield.framework_cfc$cf.udfCall(/var/www/fw1/org/corfield/framework.cfc)
at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215)
at railo.runtime.type.UDFImpl._call(UDFImpl.java:434)
at railo.runtime.type.UDFImpl.call(UDFImpl.java:384)
at railo.runtime.ComponentImpl._call(ComponentImpl.java:580)
at railo.runtime.ComponentImpl._call(ComponentImpl.java:502)
at railo.runtime.ComponentImpl.call(ComponentImpl.java:1815)
at railo.runtime.listener.ModernAppListener.call(ModernAppListener.java:349)
at railo.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:174)
at railo.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:23)
at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2035)
at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2002)
at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:297)
at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
- locked <1f879912> (a org.apache.tomcat.util.net.SocketWrapper)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


Reply all
Reply to author
Forward
0 new messages