Title:
Internal coldfusion.util.CaseInsensitiveMap class is not synchronized (thread safe). Leads to 100% CPU usage/server failure.
| View in TrackerStatus/Resolution/Reason: Closed/Won't Fix/
Reporter/Name(from Bugbase): David Stockton / David Stockton (David J Stockton)
Created: 07/25/2012
Components: Performance
Versions: 9.0.1
Failure Type: Crash
Found In Build/Fixed In Build: 9.0.1 /
Priority/Frequency: Critical / Some users will encounter
Locale/System: English / Linux All
Vote Count: 1
Problem Description:
coldfusion.util.CaseInsensitiveMap is used internally from several places (eg coldfusion.flash.messaging.io.ColdFusionPropertyProxy & coldfusion.runtime.DotResolver) but isn't thread safe. One place where it's used is in the storage of metadata properties for a CFC. If the CFC metadata properties are accessed at the same time from different threads you can get a) data loss/corruption and b) 100% CPU load.
A possible and quick fix might be to switch to using the existing coldfusion.util.CaseInsensitiveHashtable class.
Steps to Reproduce:
Setup a load test to access (eg loop over & set) the metadata of a CFC with properties and do this from multiple requests (threads). After some time (time taken depends on how long it takes to get a collision) you'll get a collision.
Actual Result:
100% CPU utilization and requests don't complete
Expected Result:
Request completes in a short time (a few milliseconds).
Any Workarounds:
No
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3295469
Deployment Phase: Release Candidate
External Customer Info:
External Company:
External Customer Name: David J Stockton
External Customer Email:
External Test Config: My Hardware and Environment details:
Linux app02 2.6.32-5-amd64 #1 SMP Thu Nov 3 03:41:26 UTC 2011 x86_64 GNU/Linux
CF: 9,0,1,274733 Standard
JVM: 1.6.0_17
Attachments:
- July 25, 2012 00:00:00: 1_stuck_threads.txt
- January 07, 2014 00:00:00: 2_cf9bug.zip
Comments: