Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does a ColdFusion Implicit Setter end up making Networking Calls?

Tags:

coldfusion

I have an implicit setter within the init() method of a CFC. I have observed (using Fusion Reactor, and, through error messages) that the simple call to setActive(false) ends up doing networking. I have no idea why ColdFusion would be doing so much work while setting this value using the implicit setters introduced with ColdFusion 9.

I am running the latest ColdFusion 9.01 with all the hotfix updates applied.

Do you know why ColdFusion would be going through all this trouble?

Thanks.

The Init Method of my CFC

/* Constructor
    @user_id A valid User_ID. If provided, the User will self-populate.
*/
public shared.models.objects.User function init (numeric user_id = -1) {
    super.init(argumentCollection=arguments);

    // Prepare structs required for 'adding' methods
    clearRoles();
    setActive(false);  // <--- THIS IS THE LINE 

    setUser_ID(user_id);

    settings = {};

    defaultLanguage = new shared.models.objects.Language();

    setLanguages( [defaultLanguage] );
    setLanguage( defaultLanguage );

    if (user_id == -1) {
        // Construct a 'blank' User
        // addRole('Contributor');
        setRequirePasswordChange(false);
    } else {
        // Attempt to populate a user
        populate();
    }

    return this;
}

The stack trace showing the networking

java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
        at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:581)
        at jrun.servlet.jrpp.ProxyEndpoint.readFully(ProxyEndpoint.java:573)
        at jrun.servlet.jrpp.ProxyEndpoint.readInt(ProxyEndpoint.java:591)
        at jrun.servlet.jrpp.ProxyEndpoint.readString(ProxyEndpoint.java:620)
        at jrun.servlet.jrpp.ProxyEndpoint.getHeader(ProxyEndpoint.java:762)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:124)
        at com.intergral.fusionreactor.filter.surrogate.e.getHeader(FusionReactorServletRequestProxy.java:248)
        at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
        at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
        at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
        at coldfusion.runtime.NeoPageContext.searchScopes(NeoPageContext.java:766)
        at coldfusion.runtime.NeoPageContext.findAttribute(NeoPageContext.java:638)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:296)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:283)
        at coldfusion.runtime.CfJspPage._get(CfJspPage.java:271)
        at cfUser2ecfc1728567179$funcINIT.runFunction(C:\web\project\projecttv\shared\models\objects\User.cfc:131)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:389)
        at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2723)
        at cfBuilder2ecfc1779563022$funcBUILDCFC.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Builder.cfc:111)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInjector2ecfc1868990138$funcBUILDINSTANCE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Injector.cfc:288)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfNoScope2ecfc139649912$funcGETFROMSCOPE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\scopes\NoScope.cfc:31)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInjector2ecfc1868990138$funcGETINSTANCE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\ioc\Injector.cfc:262)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at cfRequest2ecfc135332213$funcENSUREREQUIREDOBJECTSEXIST.runFunction(C:\web\project\projecttv\atvcms\interceptors\Request.cfc:76)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2547)
        at cfRequest2ecfc135332213$funcPREPROCESS.runFunction(C:\web\project\projecttv\atvcms\interceptors\Request.cfc:26)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
        at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:389)
        at cfInterceptorState2ecfc1253590739$funcINVOKER.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\context\InterceptorState.cfc:139)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2582)
        at cfInterceptorState2ecfc1253590739$funcPROCESS.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\context\InterceptorState.cfc:86)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfInterceptorService2ecfc1842875288$funcPROCESSSTATE.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\web\services\InterceptorService.cfc:131)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfColdbox2ecfc1041943003$funcPROCESSCOLDBOXREQUEST.runFunction(C:\web\project\projecttv\lib\frameworks\coldbox35\system\Coldbox.cfc:208)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2360)
        at cfApplication2ecfc83985088$funcONREQUESTSTART.runFunction(C:\web\project\projecttv\atvcms\Application.cfc:149)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
        at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
        at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
        at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
        at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
        at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
        at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:337)
        at coldfusion.runtime.AppEventInvoker.invoke(AppEventInvoker.java:88)
        at coldfusion.runtime.AppEventInvoker.onRequestStart(AppEventInvoker.java:258)
        at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:349)
        at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
        at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
        at coldfusion.filter.PathFilter.invoke(PathFilter.java:94)
        at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
        at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
        at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
        at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
        at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
        at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
        at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
        at coldfusion.CfmServlet.service(CfmServlet.java:200)
        at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.c(FusionReactorFilter.java:428)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.d(FusionReactorFilter.java:262)
        at com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(FusionReactorFilter.java:171)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
        at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
        at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
        at jrun.servlet.FilterChain.service(FilterChain.java:101)
        at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
        at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
        at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
        at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
        at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
        at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
        at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
        at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
        at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
like image 255
Aaron Greenlee Avatar asked Nov 05 '22 04:11

Aaron Greenlee


1 Answers

I am encountering the same problem. I believe I can add something to this but ultimately I think there is a CF defect here which I'll try to elaborate on.

First notice in the stack trace this:

    at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
    at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
    at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
    at coldfusion.runtime.NeoPageContext.searchScopes(NeoPageContext.java:766)
    at coldfusion.runtime.NeoPageContext.findAttribute(NeoPageContext.java:638)

When ColdFusion tries to resolve an unscoped variable, it will work its way up through the scope order of precedence testing each scope. If it gets all the way to CGI scope, the CF server attempts to ask the webserver connector for the CGI info in the Request's Header. In turn, the connector attempts to read from the connector handle that's holding on the TCP connection back to the browser. The network connection you are seeing in this posts original message may be the connector attempting to gather some of the CGI properties from the browser over TCP.

If the browser connection is no longer active, say the user closed the browser, clicked elsewhere, or there is a network interruption, then that TCP connection may be "stale". In that case, you will see a stack trace in the logs like this with the main message being "**error Error while reading header "

03/06 13:45:52 error Error while reading header <headername>
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
...
at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
at coldfusion.runtime.CgiScope.search(CgiScope.java:334)

ColdFusion will do a scope look up when using code like isdefined('myUnscopedVar') for example. If it gets all the way to CGI, then it will ask the connector for the header called myUnscopedVar. If the browser connection is gone, then the logs will show " error Error while reading header myUnscopedVar "

The way to avoid that is to use structKeyExists in all places you would use isDefined.

More details found in these related blog entries:

  • http://corfield.org/blog/index.cfm/do/blog.entry/entry/isDefined_vs_structKeyExists

  • http://www.coldfusionmuse.com/index.cfm/2009/8/6/examining.isDefined

  • http://www.mail-archive.com/[email protected]/msg196119.html

If you search for the error message "error Error while reading header" you will actually get a lot of false positives in the search results because ColdFusion's CFSAVECONTENT tag is implemented as a CF custom tag stored in WEB-INF, and it does something similar that has the same effect of isDefined("anUnscopedVar") in the way it captures the generated content. The built-in CF Exception handler makes use of cfsavecontent when trying to pretty up exceptions for display, so it traps the underlying application exception, tries to pretty it up, but hits the "error Error while reading header" issue, and instead of seeing the original application exception, you get this header error which masks the true issue.

    error Error while reading header S_UNABLE
java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
          ...
    at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
    at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
    at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
          ...
    at cfsavecontent2ecfm1472308084.runPage(E:\cf9_final\cfusion\wwwroot\WEB-INF\cftags\savecontent.cfm:11)
          ...
    at cfexception_en2exml1502993924.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\exception_en.xml:52)
          ...
    at cfdetail2ecfm1809038875.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\detail.cfm:35)
          ...
    at cfApplicationException2ecfm797577125.runPage(D:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\WEB-INF\exception\coldfusion\runtime\ApplicationException.cfm:2)

Again the conclusion there is that if the browser connection has been dropped, then your code may show the "reading header" error when doing a CGI lookup either by intention or because of using isDefined on an unscoped variable name.

So that's just some related background information. This issue intersects with the ORM issue in this thread.

I have found that in ColdFusion 9.01, sometimes calls to implicit setters causes ColdFusion to try to resolve the setter method as though it were a property, and it will look into the CGI scope to try to find it.

I have the following entity shown here (partly):

component persistent="true" table="myTable" output="false" extends="myBaseClass" {
property name="myProperty" column="myProperty" type="date" ormtype="timestamp";

Notice that it extends myBaseClass, which is shown (partly) here:

component {
public void function doSomething(){
    if (hasProperty('myProperty'))
        setMyProperty(now());
}

On some occasions when a template is requested which uses the entity, the template request appears to hang in the browser indefinitely with address bar spinning. Later when viewing the logs, I would find a related entry for the request showing the "error while reading header".

                03/06 13:45:52 error Error while reading header SETMYPROPRTY
            java.net.SocketTimeoutException: Read timed out
            at java.net.SocketInputStream.socketRead0(Native Method)
            ...
            at coldfusion.runtime.CgiScope.resolve(CgiScope.java:221)
            at coldfusion.runtime.CgiScope.containsName(CgiScope.java:301)
            at coldfusion.runtime.CgiScope.search(CgiScope.java:334)
            ...                
            at cfmybaseclass2ecfc1915167844$funcDOSOMETHING.runFunction(X:\MyApp\myBaseClass.cfc:8)
            ...                
            at coldfusion.orm.hibernate.HibernateEventHandler.onFlushDirty(HibernateEventHandler.java:130)
            ...                
            at coldfusion.orm.hibernate.HibernatePersistenceManager.onCommit(HibernatePersistenceManager.java:950)
            ...
            at cfsomecomp2ecfc1707726523$funcRUN.runFunction(X:\MyApp\SomeComp.cfc:131)

This stack trace tells me that ColdFusion was trying to resolve an implicit setter and tried to find it in the CGI scope by asking the connector for an HTTP request header of the same name.

To me, trying to resolve an implicit getter by searching the CGI scope for the Request Header seems like a ColdFusion defect.

Opinions?

like image 74
Steven Erat Avatar answered Nov 15 '22 14:11

Steven Erat