tracker issue : CF-3295469

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

Internal coldfusion.util.CaseInsensitiveMap class is not synchronized (thread safe). Leads to 100% CPU usage/server failure.

| View in Tracker

Status/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:

  1. July 25, 2012 00:00:00: 1_stuck_threads.txt
  2. January 07, 2014 00:00:00: 2_cf9bug.zip

Comments:

@David: Can you provide a repro case for this issue?
Comment by Nimit S.
18670 | December 18, 2013 04:16:58 AM GMT
The repro case is already in the description under "Steps to Reproduce"
Comment by External U.
18671 | December 18, 2013 05:44:29 AM GMT
@David: I tried creating a repro case as per description but issue is not getting reproduced. May be I am missing something here. If you can attach the same testcase using which issue can be reproduced.
Comment by Nimit S.
18672 | January 07, 2014 01:24:36 AM GMT
This is about 18 months old now but I've attached the test case I used at the time. In the ZIP is a JMeter load test, a CFC component & a CFM test file. You may see the data get corrupted through the top-level meta-data transposing into the sub-level properties struct - more noticeable is the 100% process CPU usage and zero request throughput. As it's a thread safety / collision issue, it can take varying amounts of time to get the problem to happen. I'd rather recommend you look at the source as you'll see clearly that the coldfusion.util.CaseInsensitiveMap class is not thread safe.
Comment by External U.
18673 | January 07, 2014 04:41:11 AM GMT
We are still having this issue every week. It's a serious issue that affects dramatically our SLA. At the time this first happened (almost 2 years ago) we worked with @David to try to solve the issue... but there was nothing we could do. The solution? kill -9 in the Coldfusion process...
Comment by External U.
18674 | February 04, 2014 11:08:42 AM GMT
It's is a serious bug, every week I have one instance down...
Vote by External U.
18677 | February 04, 2014 11:09:38 AM GMT
As contrary to what stated, the non-synchronized map should work faster and changing to synchronous one will cause more CPU usage. Not sure why there should be any server failure due to non-synchronous Map.
Comment by Nimit S.
18675 | December 05, 2014 05:25:41 AM GMT
Hi Nimit, I'm just curious.. was the attached repro ever tested? I don't see any comment here from Adobe confirming they tested the attached repro and found no issue w/ the attached repro. Thanks!, -Aaron
Comment by External U.
18676 | January 05, 2016 03:27:26 AM GMT