Re: freemarker Struts 2 Thread Lock Issue
Santosh Sharma <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <OFFF21625F.E30D04FD-ON852575BC.005A2CAF-852575BC.005A2CB0@sherwin.com> |
Hi Daniel , I m using version 3.2.8 . I looked at Freemarker site and they have done a lot of fixes in cache in version 3.2.13 . I m upgrading to latest 3.2.15 and will test with new version . Thanks San -----Daniel Dekany <[email protected]> wrote: ----- To: sanrosh95 <[email protected]> From: Daniel Dekany <[email protected]> Date: 05/20/2009 11:14AM cc: [email protected] Subject: Re: [FreeMarker-user] freemarker Struts 2 Thread Lock Issue Wednesday, May 20, 2009, 4:47:23 PM, sanrosh95 wrote: > > Hi , > > Is there a way to disable the caching in Freemarker Setting maximum cache size to 0 ("cache_storage" setting to ""strong:0, soft:0"") should do that effectively (I didn't tried it) or to plug-in a dummy freemarker.cache.CacheStorage implementation with the sme setting (use a value like "com.example.YourDummyCacheStorage"). > and what will be its impact on Performance . It has serious performance impact, as without cache getting a template includes reading it from the HDD (or from the OS disk cache, of course...) plus parsing the template to Abstract Syntax Tree. > I Saw a lot of threads hanging with below kind of stack . That's a can easily be a critical bug if it's indeed the mistake of FreeMarker... What FreeMarker version does ${.version} print? > Thanks > San > > "ExecuteThread: '22' for queue: 'default'" daemon prio=5 tid=0x00286df8 > nid=0x20 waiting for monitor entry [0x655f9000..0x655ffc30] > at > freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:245) > - waiting to lock <0x959b51d0> (a freemarker.cache.MruCacheStorage) > at > freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:229) > at > freemarker.template.Configuration.getTemplate(Configuration.java:487) > at > freemarker.core.Environment.getTemplateForInclusion(Environment.java:1357) > at freemarker.core.Include.accept(Include.java:143) > at freemarker.core.Environment.visit(Environment.java:196) > at freemarker.core.MixedContent.accept(MixedContent.java:92) > at freemarker.core.Environment.visit(Environment.java:196) > at freemarker.core.Environment.process(Environment.java:176) > at freemarker.template.Template.process(Template.java:232) > at > org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:168) > at > org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530) > at > org.apache.struts2.components.ClosingUIBean.start(ClosingUIBean.java:58) > at > org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:54) > at > jsp_servlet._portlet._jsp.__DisplayPortlet._jspService(__DisplayPortlet.java:286) > at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) > at > weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) > at > weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) > at > weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > com.sherwin.portal.user.action.AuthenticationFilter.doFilter(AuthenticationFilter.java:259) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423) > at > org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:141) > at > org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178) > at > com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253) > at > com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221) > at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) > at > org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) > at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184) > at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121) > at > com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) > at > com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) > at > com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) > at > com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) > at > org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) > at > org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) > at > org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423) > at > weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:154) > at jsp_servlet._main.__home_sw._jspService(__home_sw.java:171) > at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) > at > weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) > at > weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) > at > weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > com.sherwin.portal.user.action.AuthenticationFilter.doFilter(AuthenticationFilter.java:259) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644) > at > weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423) > at > weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:154) > at jsp_servlet._main.__main._jspService(__main.java:1473) > at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) > at > weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) > at > weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) > at > weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > com.sherwin.portal.user.action.AuthenticationFilter.doFilter(AuthenticationFilter.java:259) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:326) > at > org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063) > at > org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > at > org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:740) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) > at > weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) > at > weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > com.sherwin.portal.user.action.AuthenticationFilter.doFilter(AuthenticationFilter.java:259) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:326) > at > org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063) > at > org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386) > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) > at > org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:740) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) > at > weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) > at > weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > com.sherwin.portal.user.action.AuthenticationFilter.doFilter(AuthenticationFilter.java:259) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) > at > weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724) > at > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) > at > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) > at > weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764) > at > weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644) > at > weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178) -- Best regards, Daniel Dekany ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ FreeMarker-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freemarker-user