Lucee 5.3.9.115-RC3 is available for testing <http...
# lucee
z
Lucee 5.3.9.115-RC3 is available for testing https://dev.lucee.org/t/5-3-9-115-final-release-candidate-3/9829
👍🏼 1
👍 1
s
We are seeing very intermittent errors on just one server running Lucee 5.3.9.115-RC : '*No operations allowed after statement closed*' They happen while running a cfquery. They are not specific to a particular query and happen on different databases. We have modified the configurations for troubleshooting by elimination in the following ways: The server with the errors is Windows 2016 with the following troubleshooting iterations : Lucee 5.3.9.112-SNAPSHOT mysql driver: 8.0.28 java 11.0.14.1 (adoptium.net JRE) tomcat 8.5.77 Lucee 5.3.9.115-RC mysql driver: 8.0.19 java 11.0.14.1 (adoptium.net JRE) tomcat 8.5.77 Lucee 5.3.9.115-RC mysql driver: 8.0.28 java 11.0.14.1 (adoptium.net JRE)t tomcat 8.5.77 Lucee 5.3.9.115-RC mysql driver: 8.0.28 java 11.0.10.9-hotspot tomcat 8.5.77 The final test is to update tomcat to 9.0.39, which we have not yet tried. We have another instance which has not seen these errors running the following : Docker image mysql driver: 8.0.19 Apache Tomcat/9.0.39 11.0.9 (Oracle Corporation) 64bit Lucee 5.3.9.112-SNAPSHOT
@zackster ☝️
z
show us ya stacktrace 🙂
👍 1
s
lucee.runtime.exp.DatabaseException: No operations allowed after statement closed. com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:82) com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) com.mysql.cj.jdbc.ClientPreparedStatement.$fr$execute(ClientPreparedStatement.java:370) com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java) lucee.runtime.type.util.QueryUtil.execute(QueryUtil.java:328) lucee.runtime.type.QueryImpl.execute(QueryImpl.java:296) lucee.runtime.type.QueryImpl.<init>(QueryImpl.java:235) lucee.runtime.tag.Query.executeDatasoure(Query.java:1134) lucee.runtime.tag.Query._doEndTag(Query.java:699) lucee.runtime.tag.Query.doEndTag(Query.java:565) includes.f_work_detail_queries_cfm$cf.call(/includes/f_Work_Detail_Queries.cfm:14) lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1043) lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:935) lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:916) f_work_detail_cfm$cf.call(/f_Work_Detail.cfm:34) lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1043) lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:935) lucee.runtime.listener.ClassicAppListener._onRequest(ClassicAppListener.java:65) lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:45) lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2475) lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2465) lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2436) lucee.runtime.engine.Request.exe(Request.java:45) lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1194) lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1140) lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:102) lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) jdk.internal.reflect.GeneratedMethodAccessor57.invoke(Unknown source) jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown source) java.lang.reflect.Method.invoke(Unknown source) com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:134) com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doNext(FusionReactorRequestHandler.java:772) com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doHttpServletRequest(FusionReactorRequestHandler.java:344) com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.doFusionRequest(FusionReactorRequestHandler.java:207) com.intergral.fusionreactor.j2ee.filter.FusionReactorRequestHandler.handle(FusionReactorRequestHandler.java:809) com.intergral.fusionreactor.j2ee.filter.FusionReactorCoreFilter.doFilter(FusionReactorCoreFilter.java:36) jdk.internal.reflect.GeneratedMethodAccessor56.invoke(Unknown source) jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown source) java.lang.reflect.Method.invoke(Unknown source) com.intergral.fusionreactor.j2ee.filterchain.WrappedFilterChain.doFilter(WrappedFilterChain.java:71) jdk.internal.reflect.GeneratedMethodAccessor55.invoke(Unknown source) jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown source) java.lang.reflect.Method.invoke(Unknown source) com.intergral.fusionreactor.agent.filter.FusionReactorStaticFilter.doFilter(FusionReactorStaticFilter.java:54) com.intergral.fusionreactor.agent.pointcuts.NewFilterChainPointCut$1.invoke(NewFilterChainPointCut.java:42) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367) org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:526) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:881) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Unknown source)
z
s
Hey Zac, just a final followup on our configs which you may find useful. We tried an earlier version of Tomcat, Apache Tomcat/8.5.61, and we saw a '*No operations allowed after statement closed*' error. We then reverted to an earlier version of Lucee, 5.3.7.47, (Tomcat 8.5.77, java 10.0.14.1) and have not seen any errors since. So it does indeed look like a regression.
z
Can you comment on the ticket plz?
👍 1
s
Hi Zac, we have done further testing and this error is also apparent in Lucee 5.3.8.206. So it is a regression introduced after 5.3.7. I've updated the ticket. I think we'll need to attempt to work out which iteration of lucee this started.
z
the stack trace is always the same?
s
this is the trace from this morning:
Copy code
lucee.runtime.exp.DatabaseException: No operations allowed after statement closed.
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:82)
com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
com.mysql.cj.jdbc.ClientPreparedStatement.$fr$execute(ClientPreparedStatement.java:370)
com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java)
lucee.runtime.type.util.QueryUtil.execute(QueryUtil.java:328)
lucee.runtime.type.QueryImpl.execute(QueryImpl.java:296)
lucee.runtime.type.QueryImpl.<init>(QueryImpl.java:235)
lucee.runtime.tag.Query.executeDatasoure(Query.java:1134)
lucee.runtime.tag.Query._doEndTag(Query.java:699)
lucee.runtime.tag.Query.doEndTag(Query.java:565)
it's the same
z
i checked our sentry logs at work and found examples of this problem, so we've got some un reduced test cases to figure it out from
👍 1
s
that's good news. random exceptions are the worst to track.