I'm interested in the stack traces from these errors. Send me a couple. I'm not totally following what you are doing, or why you are doing it that way. Perhaps once I get the error stacks, I can start to get a better picture.
DW On Tue, Oct 23, 2012 at 9:11 PM, Brian G <[email protected]> wrote: > I'm trying to get my MG 3.2/Coldspring/Transfer app up to snuff so I can > begin doing true continuous deployment. I have refactored session objects > in order to persist across service layer and framework restarts > successfully. I'm running very simple tests where I restart my app in one > browser and click around in another. I can pretty easily get Model-Glue > (Controllers) to throw nonsense errors while it's reinitializing (meaning, > reloading a moment later, the error doesn't occur, and it's clear by the > error that it's an in-progress error where the controller is not fully > initialized yet). I also run into issues with Transfer emitting > CacheShutdown errors although I think I have a fix for that. > > How do I re-init my app's service layer and model-glue apps without > letting a user make a request against an uninitialized framework? Here's > my setup: > > * parent beanfactory setup as application.cs > * one MG app and two MG sub-apps in sub directories, call them "public", > "subapp1" and "subapp2" > * MG 3.2 > * Transfer ORM with EhCache > * My trigger "reinitfull' which restarts my beanfactory is NOT the same > key as Model-Glue's reload; I do that based on a suggestion by Sean > Corfield to just delete the key from the application scope which forces all > three of my MG apps to reload simultaneously. > > My Application.cfc onApplicationStart() looks like: > > <!--- create coldspring bean factory ---> > <cfset bf = createObject("component", > "coldspring.beans.DefaultXmlBeanFactory").init() /> > <cfset > bf.loadBeansFromXmlFile(expandPath("/PUKKA_MAIN_MAP/config/globalbeans.xml"), > true) /> > <cfset application.cs = bf /> > > > My OnRequestStart() looks like: > > > <cfif NOT structKeyExists(application, "cs") OR structKeyExists(URL, > "reinitfull")> > <cflock name="applicationReinit" type="exclusive" timeout="60"> > <cfif NOT structKeyExists(application, "cs") OR > structKeyExists(URL, "reinitfull")> > > <cfset msg = "Full init called" /> > > <cfinvoke component="cfide.adminapi.administrator" > method="login"> > <cfinvokeargument name="adminPassword" > value="somePassword" /> > </cfinvoke> > > <!--- clear template cache ---> > <cftry> > <cfinvoke component="cfide.adminapi.runtime" > method="clearTrustedCache" /> > <cfset msg = listAppend(msg, "Cleared Trusted Cache") /> > > <cfcatch type="any"> > <cfset msg = listAppend(msg, "FAILED to clear Trusted > Cache") /> > </cfcatch> > </cftry> > > <!--- while onApplicationStart() is running, errors can be > thrown so move the beanfactory over during shutdown ---> > <cfset bf = application.cs /> > > <cfset onApplicationStart() /> > <cfset msg = listAppend(msg, "onApplicationStart(): Coldspring > reset") /> > > <!--- shutdown transfer cache to ensure memory is released ---> > <cftry> > <cfset tf = bf.getBean('ormService') /> > <cfset tf.shutdown() /> > <cfset msg = listAppend(msg, "Transfer shutdown") /> > > <cfcatch type="any"> > <cfset msg = listAppend(msg, "Unable to clear Transfer > cache") /> > </cfcatch> > </cftry> > > <!--- force individual Model-Glue reloads (suggestion from > Sean Corfield) ---> > <cfset structDelete(application, "public", false) /> > <cfset structDelete(application, "subapp1", false) /> > <cfset structDelete(application, "subapp2", false) /> > <cfset msg = listAppend(msg, "Model-Glue restarted") /> > > </cfif> > </cflock> > > <cfif structKeyExists(application, "cs")> > <cfset ss = application.cs.getBean('sessionService') /> > <cfset ss.getMessaging().addWarning(msg) /> > </cfif> > > </cfif> > > > With very little load (e.g., one user) I'm able to fairly consistently > reproduce AN error. Rarely the same error twice because the request is > hitting the reload at some random point in the cycle so it's always > different. I believe the renaming and shutdown of the Transfer cache AFTER > restarting Coldspring (and a new instance of Transfer) has cleaned up some > of my errors with ehCache reporting it has been shutdown. > > My questions are: > > * Is this the best way to reinit? > * Should the order be different? E.g., delete model-glue first, then > coldspring, then run onApplicationStart()? > * How do other people deploy Model-Glue apps and refresh their service > layer without interrupting end user sessions? > * The structDelete on the Model Glue framework was recommended by Sean > Corfield many moons ago; perhaps this is not the best way to trigger a > reload under 3.2 or for multiple sub apps? > > Thanks! > > > Brian > > -- > Model-Glue Sites: > Home Page: http://www.model-glue.com > Documentation: http://docs.model-glue.com > Bug Tracker: http://bugs.model-glue.com > Blog: http://www.model-glue.com/blog > > You received this message because you are subscribed to the Google > Groups "model-glue" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/model-glue?hl=en -- Plutarch - "The mind is not a vessel to be filled but a fire to be kindled." -- Model-Glue Sites: Home Page: http://www.model-glue.com Documentation: http://docs.model-glue.com Bug Tracker: http://bugs.model-glue.com Blog: http://www.model-glue.com/blog You received this message because you are subscribed to the Google Groups "model-glue" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/model-glue?hl=en
