--
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 model...@googlegroups.com
To unsubscribe from this group, send email to
model-glue+...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en
Isn't that because the bean factory is, in essence, gone?
While we have a feature intended to not reload the bean factory, and just reload MG Configs, I do not believe we have a feature to make the bean factory disappear in the middle of a request. Isn't this what you are doing?
In short, I think what you may need to try, is reload your parent bean factory, then reload MG through the built in mechanism provided. It is locked and handles the reloading in a specific order.
If I'm not understanding correctly,maybe try explaining again.
DW
I believe that takes place in ModelGlue.cfm
The lock is exclusive and is double checked as is best practice.
However, I don't believe your parent bean factory is under that same lock. So when you remove that bean factory, it's out of the protected zone, thus problems arise, no?
Dw
--
I believe that takes place in ModelGlue.cfm
The lock is exclusive and is double checked as is best practice.
However, I don't believe your parent bean factory is under that same lock. So when you remove that bean factory, it's out of the protected zone, thus problems arise, no?
On Wednesday, November 7, 2012 5:48:24 PM UTC-8, Dan Wilson -
sipa...@gmail.com wrote:
I believe that ta kes place in ModelGlue.cfm
The lock is exclusive and is double checked as is best practice.
However, I don't believe your parent bean factory is under that
same lock. So when you remove that bean factory, it's out of the
protected zone, thus problems arise, no?
Correct - the exclusive named lock only prevents duplicate
initializations; it doesn't do anything related to non-reinit MG
requests from accessing values/objects that are changing during the
initialization like the parent bean factory.
We need a method of telling MG to lock/unlock access to the parent
bean factory while we reinit it. An exclusive lock on the app scope
might do it? I don't know if that would be hard to obtain in practice
in production or if it would just cause a lot of timeouts?
Brian
One way to look at this is the parent bean factory is not controlled by ModelGlue. It's expected this will be instantiated and passed to Model Glue. (Look in ModelGlue.cfm)
Reloading the Parent Bean Factory is the responsibility of the parent bean factory control mechanism. So, if you need to restrict access to this, you need to do it in the location where you reload your parent bean factory.
You may consider creating your new beanfactory in a separate application variable, then switch it over when it is instantiated. But as it stands, I don't see how MG can get involved with this process, because the parent bean factory lives inside a different context.
--
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 model...@googlegroups.com
To unsubscribe from this group, send email to
model-glue+...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en
One way to look at this is the parent bean factory is not controlled by ModelGlue. It's expected this will be instantiated and passed to Model Glue. (Look in ModelGlue.cfm)
Reloading the Parent Bean Factory is the responsibility of the parent bean factory control mechanism. So, if you need to restrict access to this, you need to do it in the location where you reload your parent bean factory.
You may consider creating your new beanfactory in a separate application variable, then switch it over when it is instantiated. But as it stands, I don't see how MG can get involved with this process, because the parent bean factory lives inside a different context.
DW
Brian G wrote:
On Wednesday, November 7, 2012 5:48:24 PM UTC-8, Dan Wilson - sipa...@gmail.com wrote:--
Correct - the exclusive named lock only prevents duplicate initializations; it doesn't do anything related to non-reinit MG requests from accessing values/objects that are changing during the initialization like the parent bean factory.
We need a method of telling MG to lock/unlock access to the parent bean factory while we reinit it. An exclusive lock on the app scope might do it? I don't know if that would be hard to obtain in practice in production or if it would just cause a lot of timeouts?
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 model...@googlegroups.com
To unsubscribe from this group, send email to
model-glue+...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en
I believe that takes place in ModelGlue.cfm
The lock is exclusive and is double checked as is best practice.
However, I don't believe your parent bean factory is under that same lock. So when you remove that bean factory, it's out of the protected zone, thus problems arise, no?
Dw
Let's say you have application.cs which is your PARENT_BEAN_FACTORY.
You have 10 other users hitting the site, they are in the middle of a request to index.cfm which is using an already-initialized Model-Glue and they are happily processing requests.
Now, I start the process of ?reinit=true which in my OnRequestStart, first calls onApplicationStart() (or just recreates application.cs) and then subsequently re-initializes Model Glue.
But, the nanosecond application.cs is reassigned, the other 10 users with in-progress requests piped through Model-Glue to the service layer begin acting crazy because, as you correctly point out, the beanfactory to which MG has a reference no longer exists.
We need some way of locking model-glue from performing a request while we recreate the bean factory and assign it.
Brian
On Monday, November 5, 2012 4:45:46 PM UTC-8, Dan Wilson - sipa...@gmail.com wrote: --
Have you possibly tried some way to put the new ParentBeanFactory in a different key in the application scope? Then passing the new key to the MG child apps for reload?
On Monday, November 12, 2012 5:41:47 PM UTC-8, Dan Wilson - sipa...@gmail.com wrote:Have you possibly tried some way to put the new ParentBeanFactory in a different key in the application scope? Then passing the new key to the MG child apps for reload?
The getID method was not found. | |||||||||
| Either there are no methods with the specified method name and argument types, or the getID method is overloaded with argument types that ColdFusion cannot decipher reliably. ColdFusion found 0 methods that matched the provided arguments. If this is a Java object and you verified that the method exists, you may need to use the javacast function to reduce ambiguity. | |||||||||
| The error occurred inC:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\views\pages\index.cfm: line 32 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfm: line 33 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfc: line 84 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc: line 687 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc: line 285 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\phase\Invocation.cfc: line 96 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc: line 189 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfc: line 297 Called from C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfm: line 110 Called from C:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\index.cfm: line 78 | |||||||||
30 :
31 : <cfset obj = viewState.getValue("testObject") />
32 : <cfoutput>#obj.getID()#</cfoutput>
33 :
34 : <p>
| |||||||||
Resources:
| |||||||||
| |||||||||
| Stack Trace |
at cfindex2ecfm1701861048.runPage(C:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\views\pages\index.cfm:32) at cfViewRenderer2ecfm1037665257.runPage(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfm:33) at cfViewRenderer2ecfc1037665043$funcRENDERVIEW.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfc:84) at cfEventContext2ecfc516297268$funcRENDERVIEW.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:687) at cfEventContext2ecfc516297268$funcEXECUTEEVENTQUEUE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:285) at cfInvocation2ecfc905915655$funcEXECUTE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\phase\Invocation.cfc:96) at cfEventContext2ecfc516297268$funcEXECUTE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:189) at cfModelGlue2ecfc217417458$funcHANDLEREQUEST.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfc:297) at cfModelGlue2ecfm217417416.runPage(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfm:110) at cfindex2ecfm1265377074.runPage(C:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\index.cfm:78) coldfusion.runtime.java.MethodSelectionException: The getID method was not found. at coldfusion.runtime.java.ObjectHandler.findMethodUsingCFMLRules(ObjectHandler.java:322) at coldfusion.runtime.StructBean.invoke(StructBean.java:527) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2300) at cfindex2ecfm1701861048.runPage(C:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\views\pages\index.cfm:32) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661) at cfViewRenderer2ecfm1037665257.runPage(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfm:33) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196) at coldfusion.filter.CFVariablesScopeFilter.invoke(CFVariablesScopeFilter.java:63) at coldfusion.tagext.lang.ModuleTag.doStartTag(ModuleTag.java:280) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661) at cfViewRenderer2ecfc1037665043$funcRENDERVIEW.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\view\ViewRenderer.cfc:84) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) at cfEventContext2ecfc516297268$funcRENDERVIEW.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:687) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471) at cfEventContext2ecfc516297268$funcEXECUTEEVENTQUEUE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:285) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) at cfInvocation2ecfc905915655$funcEXECUTE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\phase\Invocation.cfc:96) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) at cfEventContext2ecfc516297268$funcEXECUTE.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\eventrequest\EventContext.cfc:189) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) at cfModelGlue2ecfc217417458$funcHANDLEREQUEST.runFunction(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfc:297) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) at cfModelGlue2ecfm217417416.runPage(C:\Users\brian\Documents\web\trunk-shared\ModelGlue\gesture\ModelGlue.cfm:110) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2661) at cfindex2ecfm1265377074.runPage(C:\Users\brian\Documents\web\mg\modelgluesamples\helloworld\index.cfm:78) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:273) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:86) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:27) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.CfmServlet.service(CfmServlet.java:175) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94) at jrun.servlet.FilterChain.service(FilterChain.java:101) at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106) at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) |
--
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 model...@googlegroups.com
To unsubscribe from this group, send email to
model-glue+...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en
I'm happy to look in to this and provide a fix. However, we are days away from having our new (2nd) child. So, I need to be efficient with my time.
I saw you sent me your sample app in a different email, thanks for that. Do me a favor and also send me your load test script, any specific steps, and any additional information you can give me so I can work on this in a targeted way. Here's what I see I need:1 - A way to replicate your exact findings. Please be specific here with what I need to do to set this up and to recreate the exact problems you've found2 - Any information you've uncovered as to what may be the source of the code issues.Keep in mind, whatever is happening is happening way deep in the core, way deep in many many layers of abstraction. So it may take me a minute, but if you can send me the things I'll need to very easily replicate the issue, I promise to look into this and provide an update to the core.