Andre Kapp
Tue, 08 Dec 2009 21:35:07 -0800
> > It pretty much looks like a singleton design!
>
> Yep. I think Jaime has it right. It looks like few (if any) of the
> variables set within the DAO's functions are VAR scoped. So they will
> automatically be placed in the shared "variables" scope. Since you are
> working with a singleton, those variables will be accessible to
> multiple threads. Under heavy load, it is very likely that would lead
> to the behavior you have described. ie One thread overwriting values
> set by another.
>
> All variables that are local to a function must be VAR-scoped. That
> ensures they are only visible to the function, and not other threads.
> It seems like the code starts to do the right thing by declaring the
> function-local structure "stTrans".
>
> <cffunction name="process" access="public" returntype="struct">
.....
>
> <cfset var stTrans = structNew() />
....
>
> <!---
> theCurrentAvailableBalance will be place the shared variables scope
> --->
>
> </cffunction>
>
> But then starts using un-VAR'd variables like:
>
> <cfset theCurrentAvailableBalance = variables.accountService.
> getAccountBalance("available", arguments.acctid)>
...
>
>
> Since theCurrentAvailableBalance was not var-scoped (or added to an
> object that _was_ var-scoped) it will fall into the "variables" scope.
> Since the DAO functions seem to use a lot of variables, the easiest
> way to make them function-local would to add them to the localized
> structure "stTrans". **Note, as Jaime mentioned this includes query
> names as well.
>
> Example:
> <cfset stTrans.theCurrentAvailableBalance = variables.accountService.
> getAccountBalance("available", arguments.acctid)>
> <cfset stTrans.theCurrentActualBalance = variables.accountService.
> getAccountBalance("actual", arguments.acctid)>
...
> etcetera ...
>
>
> <cfquery datasource="#variables.dsn#" name="stTrans.trans_insert"
> result="stTrans.trans_insert_res">
.....
>
>
>
> HTH
> -Leigh
>
>
>
>
>
Tks Leigh
I changed all the variables to be var scoped. I have also var scoped the queries. Still busy testing but it looks gooooodddd!!!! Tks again for all the input. Without this I would have been lost! I still believe the Singleton is not the correct design pattern here, so will still do some work on that. Andre ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Want to reach the ColdFusion community with something they want? Let them know on the House of Fusion mailing lists Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:328999 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4