I have some questions relating to how client variable storage was handled 
in CF 4.0 compared to how it is handled today in CF 5.0.  Some background 
information may help these questions make sense by putting them in context:

Background info
===============
I am upgrading a web site (not of my design or construction) that is still 
running CF 4.0, that uses three load-balanced web servers.  The site owner 
has been having endless problems that appear to trace to client variables 
getting mixed up somehow, with the end result being that people who log in 
sometimes see other people's data returned from the database instead of 
their own.  This results in some unpleasant calls to customer support and 
probably a certain amount of lost business that we never learn about.  The 
CF coding is very poor (no indents, max dependencies everywhere, deeply 
nested CFINCLUDEs, no variable scoping, variables renamed every time they 
get passed from one place to the next, etc.) and the database is for 
practical purposes almost impenetrable (it's an academic's experiment of a 
denormalized style of database that is emulated on SQL Server, with no 
primary keys, completely unrelated data stored in the same tables, almost a 
thousand Byzantine stored procedures to maintain referential integrity, 
views of views of views and so on -- but that is a separate problem).  In 
this environment it would be extremely difficult to isolate this problem 
even if I could reproduce it, but I have never been able to observe the 
problem myself, we just get two or three irate customers calling every day 
about it.

Needless to say, the only sensible thing to do is to replace the awful 
database with a normal one and rewrite all the kludgy CF code the way it 
should have been written in the first place, and this is what I am 
beginning to do.  Tonight I removed one of the three web servers from load 
balancing and upgraded it to CF 5.0 as an early step in the process, and 
something odd happened: the client variable storage that had worked 
previously in CF 4.0 didn't work any longer, even though it was set up to 
work the same way as it did before in the CF Administrator.  The Registry 
is set up as the default location for client variable storage; however the 
production database was still explicitly named as the place for client 
variable storage in the CFAPPLICATION tag in Application.cfm 
(CLIENTSTORAGE="ProductionDB").  Looking in ProductionDB, I noticed 
something that had eluded me before: no CDATA and CGLOBAL tables!  That 
must mean that CF 4.0 doesn't find them in the production database and uses 
the Registry default as set up in the CF Administrator.  I'm guessing that 
CF 5.0 is stricter and won't put up with such shenanigans, and that if the 
database specified for use as client variable storage in the CFAPPLICATION 
tag doesn't have those tables, CF 5.0 throws an error.

So, my questions for you experts are:

1) Is my conclusion true, did CF 4.0 default to the Registry (or the 
default setup in the CF Administrator for client variable storage) if the 
database specified in the CFAPPLICATION tag for client variable storage did 
not contain CDATA and CGLOBAL tables?

2) Can client variables be maintained properly in a load-balanced (by 
hardware, not ClusterCats) system if they are stored in the Registry of 
each web server?  I'm thinking that this might explain how the client 
variables are getting mixed up.

Thanks for your help.

Regards,

Karl Simanonok


FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

Reply via email to