tracker issue : CF-4203997

select a category, or use search below
(searches all categories and all time range)
Title:

Implicit get accessor fails under heavy load

| View in Tracker

Status/Resolution/Reason: To Fix//NeedMoreInfo

Reporter/Name(from Bugbase): ANTTI K. / ()

Created: 02/01/2019

Components: Language, CF Component, Performance

Versions: 2016

Failure Type: Performance Issue

Found In Build/Fixed In Build: Adobe ColdFusion (2018 Release) Update 1 installed /

Priority/Frequency: Normal / Few users will encounter

Locale/System: / Win 2016

Vote Count: 5

Problem Description: When using implicit accessors and server is under heavy load, the implicit get accessor randomly fails with "Element OBJECT.PROPERTY is undefined" error message. This same issue has been posted to Adobe CF community forum as well: https://forums.adobe.com/message/10881920. 

Steps to Reproduce:
1. Create a new ColdFusion application with the following files:
Application.cfc:
<cfcomponent output="false">
    <cfset this.invokeImplicitAccessor = true />
</cfcomponent>

Person.cfc:
component accessors=true {
    property string firstName;
}

index.cfm:
<cfscript>
    local.person = new Person();
    local.person.firstName = "Zachary";

    for( local.i = 0; local.i < 1000; local.i++ ) {
        local.j = local.person.firstName;
    }
</cfscript>

index2.cfm:
<cfscript>
    local.person = new Person();
    local.person.firstName = "Zachary";

    for( local.i = 0; local.i < 1000; local.i++ ) {
        local.j = local.person.getFirstName();
    }
</cfscript>

2. Test the index.cfm with JMeter, use 2000 threads, 10s Ram-Up Period and Loop count 1 (test plan: https://pastebin.com/nBtpL4zP). The for loops has been added to the implementation to make the page heavier. When testing, adjusting the thread count and loop variables according to the hardware used might be required, in order to reproduce the error.

Please note, that this simple example code requires 100-2000 threads to reproduce the error, but in our real application, which is far heavier than this single page app, the issue occurs even with couple of users as well.

Actual Result: In our tests the page always fails with the same error message:
"Element PERSON.FIRSTNAME is undefined in LOCAL.". The error % we are getting with the above settings usually falls somewhere between 8 to 10 %, meaning that 160 to 200 requests out of 2000 requests fails. Here is full error message: https://pastebin.com/budqiV1m. 

Expected Result:When index2.cfm gets tested with the same settings, we don't get any errors, and this is the expected result.

Any Workarounds: Use generated accessors shown in example file index2.cfm.

Attachments:

Comments:

I can confirm this behavior. It's is not consistent, it is working 8 times out of 10. This should be a very high priority for Adobe to figure out and fix. BTW this is ColdFusion 2016 with latest update and JVM, and as far as I can tell it start happening after deploying update 7
Vote by M M.
30172 | February 01, 2019 03:56:26 PM GMT
Been plagued by this behavior since CF 11, was hoping it was already fixed in 2016 and especially 2018. Constantly getting errors in our app when we use implicit getters, and it was documented and showcased as a feature of ColdFusion long ago!
Vote by Phill N.
30856 | May 30, 2019 01:27:01 PM GMT
This is rather annoying. My local env running the same version works fine but pushing code to production throws the error. I need to know that code developed locally will work when pushed to production.
Comment by John V.
31957 | December 09, 2019 06:37:59 PM GMT
This is showing up in CF2018 Windows 64 bit ver 2018.0.06.316308 in a staging environment - very low traffic.
Vote by Steve L.
31959 | December 09, 2019 06:44:04 PM GMT
@Adobe, What's the status on this ticket.. it says need more info, but you will not encounter this if you just stand up a single test case without the load seen in production.. what are your testing capabilities inhouse?
Comment by Phill N.
31958 | December 16, 2019 03:11:57 PM GMT