Hey esteemed Lucee Devs!
Sorry to put this on your plate, but I think we found a bug.
OS: Windows 2019
Java Version: Tested with both OpenJDK 11.0.11 (bundled) and Oracle 11.0.18 (64-bit)
Tomcat Version: Apache Tomcat 9.0.45
Lucee Version: 6.0.0.503-RC
We have a custom component we use for some encryption, which works fine in 5.4. (both 5.4.0.80 and 5.4.1.8), but breaks in 6.0.
The cfc of one of our models includes a simple call which is now failing:
<cfset var classEncryption = createObject("component", "Encryption")>
and that CFC is pretty straightforward:
<cfcomponent displayname="Encryption" hint="Encryption" accessors="true">
<cfset secretkeys = "obviouslyredacted" />
...
<cffunction name="Encrypt" access="public" output="no" hint="" >
...
<cffunction name="Decrypt" access="public" output="no" hint="" >
...
Error Message: Receiver class cfc.encryption_cfc$cf$7 does not define or inherit an implementation of the resolved method abstract getSubname()Ljava/lang/String; of interface lucee.runtime.PagePro.
Stack Trace:
lucee.runtime.exp.NativeException: Receiver class cfc.encryption_cfc$cf$7 does not define or inherit an implementation of the resolved method abstract getSubname()Ljava/lang/String; of interface lucee.runtime.PagePro. at lucee.runtime.ComponentImpl.<init>(ComponentImpl.java:195) at cfc.encryption_cfc$cf$7.newInstance(/cfc/encryption.cfc:1) at lucee.runtime.component.ComponentLoader.initComponent(ComponentLoader.java:653) at lucee.runtime.component.ComponentLoader._loadComponent(ComponentLoader.java:577) at lucee.runtime.component.ComponentLoader.load(ComponentLoader.java:496) at lucee.runtime.component.ComponentLoader._search(ComponentLoader.java:261) at lucee.runtime.component.ComponentLoader._search(ComponentLoader.java:191) at lucee.runtime.component.ComponentLoader.searchComponent(ComponentLoader.java:84) at lucee.runtime.PageContextImpl.loadComponent(PageContextImpl.java:3295) at lucee.runtime.functions.other.CreateObject.doComponent(CreateObject.java:148) at lucee.runtime.functions.other.CreateObject.call(CreateObject.java:70) at lucee.runtime.functions.other.CreateObject.call(CreateObject.java:49) at cfc.member_cfc$cf$3.udfCall5(/cfc/Member.cfc:2381) at cfc.member_cfc$cf$3.udfCall(/cfc/Member.cfc) at lucee.runtime.type.UDFImpl.implementation(UDFImpl.java:112) at lucee.runtime.type.UDFImpl._call(UDFImpl.java:348) at lucee.runtime.type.UDFImpl.call(UDFImpl.java:223) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:665) at lucee.runtime.ComponentImpl._call(ComponentImpl.java:587) at lucee.runtime.ComponentImpl.call(ComponentImpl.java:1962) at lucee.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:787) at lucee.runtime.PageContextImpl.getFunction(PageContextImpl.java:1777) at common.header_cfm$cf.call(/common/header.cfm:7) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1027) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:950) at lucee.runtime.PageContextImpl.doInclude(PageContextImpl.java:931) at html.mystores_cfm$cf.call(/html/MyStores.cfm:172) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:1027) at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:950) at lucee.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:221) at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:44) at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2494) at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2480) at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2451) at lucee.runtime.engine.Request.exe(Request.java:45) at lucee.runtime.engine.CFMLEngineImpl._service(CFMLEngineImpl.java:1218) at lucee.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:1164) at lucee.loader.engine.CFMLEngineWrapper.serviceCFML(CFMLEngineWrapper.java:97) at lucee.loader.servlet.CFMLServlet.service(CFMLServlet.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.AbstractMethodError: Receiver class cfc.encryption_cfc$cf$7 does not define or inherit an implementation of the resolved method abstract getSubname()Ljava/lang/String; of interface lucee.runtime.PagePro.
Note: Not sure why Oracle Java 11.0.18 shows the letter L in the error (the resolved method abstract getSubname()Ljava/lang/String; of interface lucee.runtime.PagePro), versus with OpenJDK we were seeing the error formatted better (the resolved method âabstract java.lang.String getSubname()â of interface lucee.runtime.PagePro), but I think thatâs just a formatting thing.
I tried making our component implement the interfaces: lucee.runtime, lucee.runtime.PagePro. I did not try to make it extend another component (such as org/lucee/cfml/HelperBase.cfc) as I have no idea about all that â most of our code is web and procedural, so some of the object oriented bits and deeper workings of Lucee engine escape me.
Lucee 6, I did switch to Single Admin mode (although we run 3 separate âcontextsâ) and had to rebuild the Default Caches â but other than that, it seems all the Lucee server settings mirror that in our 5.4.1.8 production environment. Let me know if we should try switching back to Multimode.
We are experimenting with Lucee 6 and Oracle Java due to some instability weâve had now that we are using Lucee 5.4 (both 5.4.0.80 and 5.4.1.8) in production â under âloadâ, it kills Coldbox MVC middleware weâre using, although RAM/CPU seems good and thread / request management seems OK (we get better results with higher request thresholds, but nothing concrete, and tinkering with the queue / Tomcat thread max doesnât seem to make much of a difference). So far, Lucee 5.4.1.8 with Oracle Java 11.0.18 seems more stable, but itâs too early to tell.
Any suggestions?
Hopefully this helps you as a report of 6.0 testing in the field. Happy to provide further details or testing. Hopefully I didnât miss something remedial, but happy to take that critique as well. Thanks!