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:
"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 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)