[coldbox-3.5.2,coldbox-5.2.0] Coldbox framework versions appear to bleed

We are using multiple versions of coldbox on a single instance (3.5.2 and 5.2.0). We are now having issues with the two framework version appearing to bleed into one another. We have the coldbox 3.5.2 directory in the server root on a couple of our servers and are in the process of removing it (legacy 3.5.2 applications are not bootstrapping but extending coldbox), but we still receive an error with our interceptors throwing various errors of methods/settings not found. For example, the stack trace below shows the application is using coldbox 3.5.2 root directory but during the request it switches over to 5.2.0, then switches back. There is no mapping to 5.2.0 so there is no way the 3.5.2 application should know about the 5.2.0 framework:

coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3000) at cfUtil2ecfc44747703$funcTHROWIT.runFunction(C:/htdocs/coldbox/system/core/util/Util.cfc:164) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424) at cfController2ecfc604161359$funcGETSETTING.runFunction(C:/htdocs/coldbox/system/web/Controller.cfc:318) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfFrameworkSupertype2ecfc888810895$funcLOADAPPLICATIONHELPERS.runFunction(C:/htdocs/common/coldbox/framework/5.2.0/system/FrameworkSupertype.cfc:490) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2854) at cfInterceptor2ecfc1253184881$funcINIT.runFunction(C:/htdocs/common/coldbox/framework/5.2.0/system/Interceptor.cfc:48) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424) at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:406) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:3001) at cfBuilder2ecfc426156168$funcBUILDCFC.runFunction(C:/htdocs/coldbox/system/ioc/Builder.cfc:111) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfInjector2ecfc1524862979$funcBUILDINSTANCE.runFunction(C:/htdocs/coldbox/system/ioc/Injector.cfc:288) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfSingleton2ecfc1215072809$funcGETFROMSCOPE.runFunction(C:/htdocs/coldbox/system/ioc/scopes/Singleton.cfc:49) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfInjector2ecfc1524862979$funcGETINSTANCE.runFunction(C:/htdocs/coldbox/system/ioc/Injector.cfc:262) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfInterceptorService2ecfc873536065$funcCREATEINTERCEPTOR.runFunction(C:/htdocs/coldbox/system/web/services/InterceptorService.cfc:244) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2854) at cfInterceptorService2ecfc873536065$funcREGISTERINTERCEPTOR.runFunction(C:/htdocs/coldbox/system/web/services/InterceptorService.cfc:190) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2819) at cfInterceptorService2ecfc873536065$funcREGISTERINTERCEPTORS.runFunction(C:/htdocs/coldbox/system/web/services/InterceptorService.cfc:105) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2854) at cfInterceptorService2ecfc873536065$funcONCONFIGURATIONLOAD.runFunction(C:/htdocs/coldbox/system/web/services/InterceptorService.cfc:75) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfLoaderService2ecfc617054184$funcLOADAPPLICATION.runFunction(C:/htdocs/coldbox/system/web/services/LoaderService.cfc:76) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:643) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:432) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:402) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2483) at cfColdbox2ecfc1727666559$funcLOADCOLDBOX.runFunction(C:/htdocs/coldbox/system/Coldbox.cfc:71) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:231) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2854) at cfApplication2ecfc1174150159$funcONAPPLICATIONSTART.runFunction(C:/htdocs/example/Application.cfc:32) at

The issue is that we have legacy 3.5.2 applications that do not bootstrap coldbox so we need to be able to preserve the mapping to coldbox until bootstrapping is implemented. On top of that the issue can be resolved by either reloading the application or clearing the cache and it is not reproducible everytime.

When the ColdFusion server is restarted, whichever coldbox version loads first is the interceptor version that is used. A workaround we implemented was to remove "extends=“coldbox.system.Interceptor” and the problem was resolved. However, I have noticed a similar error being thrown reference the event (I don’t have that particular error to post at the moment) where a ColdBox 5.2.0 application was referencing 3.5.2 event handler.

According to the stack trace above the following line causes the issue, I am curious about the value of oModel (could it contain an absolute path to the framework?):

My assumption is that the .class file for the interceptor is perhaps being cached and the reference to the first application being loaded is being cached. For example if we load the 5.2.0 application first, 3.5.2 will display the error and vice versa. I am assuming this is also occuring with 3.8.1, but we are only now seeing error because since coldbox 4.x the methods have either been deprecated or removed.

Any advice that can assist which can get us patched up until we are able to upgrade our coldbox applications will be much appreciated.

Turn off component caching in the CF administrator. it will cause this issue because it creates a server wide cache that maps CFC paths such as “coldbox.system.ioc.Injector” to a specific file path on disk. When component cache is enabled, all apps on your server share the same cache which causes issues for people like yourself all the time.

Awesomesauce on the feedback. It appears if we are concerned about server performance then we may need to create a separate instance. Do you know if we can have multiple versions of ColdBox 5.x on the same instance or is this just an issue going from 3.x-5.x? I know major changes were implemented so I would fully understand the reasoning.

-Mike

I wouldn’t worry about performance turning that off. It’s a dumb setting and Lucee doesn’t even have it. using component cache would affect any time you had any CFC of the same name in two separate sites. So, yes it would be the same issue if you had coldbox 5.0 and 5.1 for instance. But turning off that setting should be no problem. Just use application mappings in your Application.cfc for each site and you’ll be fine. And to reiterate, this is an Adobe issue, not a ColdBox one.