Status/Resolution/Reason: Closed/Withdrawn/Duplicate
Reporter/Name(from Bugbase): Ryan Peters / Ryan Peters (Ryan Peters)
Created: 10/22/2012
Components: Database
Versions: 10.0
Failure Type: Data Corruption
Found In Build/Fixed In Build: Final /
Priority/Frequency: Major / Few users will encounter
Locale/System: English / Linux All
Vote Count: 0
Duplicate ID: CF-3369530
Problem Description:
Our application uses a proprietary session management system that allows it to seamlessly run from multiple, load-balanced servers. The architecture has been in use for quite some time - but we've run into some issues ever since upgrading from CF9 to CF10 this summer. Specifically, when a database call is made from within a function, we're having sporadic issues with the database call returning incorrect data when the only parameter for the query is a UUID string that's passed to the function. This caused user information to "cross over" and would show session data from one user to another user.
Steps to Reproduce: We cannot reproduce this at will. It seems to be a random occurrence, but happens 10-50 times per day (out of 75,000 requests). It occurs on all affected servers, all browsers - we can't find any common thread.
Actual Result: Every request calls "GetSessionData" from within a application-level component (functions.cfc) that's called as <cfset application.fn.GetSessionData(sessionkey)> - the function simply takes that argument, queries the database, and loops through the resultset and sets them as request-scoped variables. What's happening, though - is that the CFQUERY that calls the database acts as if a completely different value than the used has been passed. So the returned data is totally incorrect - it correlates to a different visitor's session information. We added a <cfmail> block that contained a <cfdump> of the query as well as the arguments passed to the function. The argument shows the correct value, but the dump of the query shows the different ones.
Expected Result: The CFQUERY should use the correct value for <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#arguments.targetsessionkey#">.
Any Workarounds: We had to add code to detect when the sessionkey returned by the query did not match the arguments.targetsessionkey value. We then execute the query AGAIN, and thus far, it returns the correct data. We're still getting periodic reports of behavior like this, and are receiving 10-50 notices per day from the system when the condition occurs.
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3351039
External Customer Info:
External Company:
External Customer Name: TheOtherRyan
External Customer Email:
External Test Config: My Hardware and Environment details:
System Information
Server Details
Server Product ColdFusion
Version ColdFusion 10,282913
Edition Standard
Operating System UNIX
OS Version 2.6.35.4-rscloud
Update Level /usr/local/coldfusion10/cfusion/lib/updates/chf10000002.jar
Adobe Driver Version 4.1 (Build 0001)
JVM Details
Java Version 1.6.0_29
Java Vendor Sun Microsystems Inc.
Java Vendor URL http://java.sun.com/
Java Home /usr/local/coldfusion10/jre
Java File Encoding UTF8
Java Default Locale en_US
File Separator /
Path Separator :
Line Separator Chr(10)
User Name nobody
User Home /usr/src
User Dir /usr/local/coldfusion10/cfusion/bin
Java VM Specification Version 1.0
Java VM Specification Vendor Sun Microsystems Inc.
Java VM Specification Name Java Virtual Machine Specification
Java VM Version 20.4-b02
Java VM Vendor Sun Microsystems Inc.
Java VM Name Java HotSpot(TM) 64-Bit Server VM
Java Specification Version 1.6
Java Specification Vendor Sun Microsystems Inc.
Java Specification Name Java Platform API Specification
Java Class Version 50.0
Server Information
General Settings
Timeout requests Yes
Enable Per App Settings Yes
Request Time Limit 80 seconds
Use UUID for CFToken Yes
Disable Service Factory No
Protect serialized JSON No
Protect Serialized JSON Prefix //
Missing Template Handler
Site-wide Error Handler
Enable HTTP status codes Yes
Enable Global Script Protection Yes
ORMSearch Index Directory
Default CFForm ScriptSrc Directory /CFIDE/scripts/
Google Map Key
Maximum size of post data 20 MB
Request Throttle Threshold 4 MB
Request Throttle Memory 200 MB
Request Tuning
Simultaneous request limit 0
CFThread Pool Size 10
Maximum number of report threads 0
Caching
Template cache size 2500 templates
Enable trusted cache No
Cached query limit 8000
Save Class Files Yes
Client Variable Settings
Default client variable store Cookie
Client Stores
Registry
Type REGISTRY
Description System registry.
Purge data after time limit Yes
Time limit 90 days
Disable global updates No
Cookie
Type COOKIE
Description Client based text file.
Purge data after time limit Yes
Time limit 10 days
Disable global updates No
Memory Variables
J2EE Sessions No
Application Variables
Enable Application Variables Yes
Default Timeout 2,0,0,0
Maximum Timeout 2,0,0,0
Session Variables
Enable session variables Yes
Default Timeout 30,0,0,0
Maximum Timeout 30,0,0,0
ColdFusion Mappings
/gateway /usr/local/coldfusion10/cfusion/gateway/cfc
/CFIDE /usr/local/coldfusion10/cfusion/wwwroot/CFIDE
Mail Connection Settings
Default Server Port 25
Connection Timeout 60 seconds
Spool Interval 15 seconds
Mail Delivery Threads 10
Maintain Connection to Mail Server No
Max Messages Spooled to Memory 50000
Default CFMail Charset UTF-8
Use SSL Connection No
Use TLS No
Default Mail Server
ww2.xxxxxxxxx.com
Server ww2.xxxxxxxxx.com
Port 25
Username
Password
Mail Logging Settings
Log Severity error
Log all E-mail messages sent by ColdFusion Yes
Charting
Cache Type disk images
Maximum number of images in cache 50 images
Maximum number of charting threads 4
Disk cache location
CF data source name *******
Description
Driver MSSQLServer
JDBC URL jdbc:macromedia:sqlserver://*******:1433;databaseName=xxxxxxxxx;SelectMethod=direct;sendString ParametersAsUnicode=false;querytimeout=0; ;MaxPooledStatements=100
Username *******
Login timeout 30 seconds
Long text buffer size 64000
Timeout 1200 seconds
Maintain connections Yes
Interval 420 seconds
Restricted SQL operations
Disable connections No
Attachments:
Comments: