Bug #46348 MEM cookie lengths with other apps on server make everything unusable
Submitted: 23 Jul 2009 11:06 Modified: 21 Sep 2009 15:18
Reporter: Mark Leith Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Enterprise Monitor: Server Severity:S3 (Non-critical)
Version:2.1.0 OS:Any
Assigned to: Josh Sled CPU Architecture:Any

[23 Jul 2009 11:06] Mark Leith
Description:
If you run the MEM server on the same machine as another web application, and both store a decent amount of information within a cookie on the same base URL, the length of the MEM related cookie information causes the browser to fail with errors such as the following (from Safari 4):

Bad Request

Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

Cookie: __utma=183337658.3685800196369993700.1241092024.1248080652.1248188601.199; __utmc=183337658; __utmz=183337658.1247859315.194.26.ut......

How to repeat:
It's complicated. :) 

Suggested fix:
Try to store less state within cookies?
[24 Jul 2009 17:09] Enterprise Tools JIRA Robot
Josh Sled writes: 
Yes, it is true.

There are two main culprits here: - Correlation Graphs and expando-row-state.  We store both in cookies.

The Correlation Graph cookies should be deleted immediately after receipt and processing by the browser; we basically use them as a side-channel to communicate the meta-data required for the CG javascript.  Apparently, we don't always remove them.  It'd be nice if we did a little housekeeping at some reasonable point to remove these, since they shouldn't hang around.

The expando-row state saving has a couple of points.  Firstly, we can use the same client-side-persistence library we use for Correlation Graphs to move the state out of a cookie and into whatever's the "best" place to store such information in a browser-dependent fashion, falling back to cookies as last resort.  Also, it might be nice to just save "all expanded" instead of enumerating that every row is expanded ... but it's unclear that that would be a big win in this case.
[28 Jul 2009 19:18] Enterprise Tools JIRA Robot
Josh Sled writes: 
revno: 7419
revision-id: jsled@asynchronous.org-20090728190908-90bqn3mql793c45y
parent: jsled@asynchronous.org-20090728164819-rollculca6hnfgx6
committer: Josh Sled <jsled@asynchronous.org>
branch nick: local
timestamp: Tue 2009-07-28 15:09:08 -0400
message:
  EM-3474: clean up stray CG cookies on page loads
[29 Jul 2009 21:17] Enterprise Tools JIRA Robot
Josh Sled writes: 
revno: 7424
revision-id: jsled@asynchronous.org-20090729200258-2ojwrm5hfogmboh8
parent: jsled@asynchronous.org-20090728190908-wo735uef7hc0jumu
committer: Josh Sled <jsled@asynchronous.org>
branch nick: local
timestamp: Wed 2009-07-29 16:02:58 -0400
message:
  EM-3474, Bug#46348: Add support to the rowToggle infra for using either the cookieJar or client-side storage for its bulky data; add a Setting for using clientSideStorage, plumb through.
------------------------------------------------------------
revno: 7423
revision-id: jsled@asynchronous.org-20090728190908-wo735uef7hc0jumu
parent: bill.weber@sun.com-20090729190638-zowkur00mr70gimr
committer: Josh Sled <jsled@asynchronous.org>
branch nick: local
timestamp: Tue 2009-07-28 15:09:08 -0400
message:
  EM-3474: clean up stray CG cookies on page loads
[30 Jul 2009 16:56] Enterprise Tools JIRA Robot
Keith Russell writes: 
Patch installed in versions => 2.1.0.1082.
[12 Aug 2009 18:13] Enterprise Tools JIRA Robot
Diego Medina writes: 
Verified fixed on 2.1.0.1093

If you add the option:

ui.javascript.useClientSideStorage = true

to the /apache-tomcat/webapps/ROOT/WEB-INF/config.properties  file, you will not see cookies like "CurrentSchedule.action_index_nodeExpansion" among others.
[21 Sep 2009 15:18] Tony Bedford
An entry was added to the 2.1.0 changelog:

The length of the MySQL Enterprise Monitor related cookie information caused the web browser to fail with errors such as the following (from Safari 4):

Bad Request

Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.

Cookie: __utma=183337658.3685800196369993700.1241092024.1248080652.1248188601.199;
__utmc=183337658; __utmz=183337658.1247859315.194.26.ut......