You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "shantanu bansal (JIRA)" <ji...@apache.org> on 2009/04/07 16:42:06 UTC

[jira] Commented: (WW-2753) Threads are blocked in LocalizedTextUtil.findResourceBundle leading to very bad response times

    [ https://issues.apache.org/struts/browse/WW-2753?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45851#action_45851 ] 

shantanu bansal commented on WW-2753:
-------------------------------------

I am facing the same issue with "struts.devMode" as false.
Did someone find a fix for this?

> Threads are blocked in LocalizedTextUtil.findResourceBundle leading to very bad response times
> ----------------------------------------------------------------------------------------------
>
>                 Key: WW-2753
>                 URL: https://issues.apache.org/struts/browse/WW-2753
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.0.11.1, 2.1.2
>         Environment: RHEL3 with apache2.0 and tomcat 6.0.13, with an average load of 30-40 req per sec. We are using struts 2.0.11.1, xwork2.0.4,tiles 2.0.6.freemarker2.3.13.
>            Reporter: kirti teja
>            Priority: Critical
>
> we have encountered a production incident of very slow response times over 5 mins per page.  Investagtion lead to understanding that a huge number of threads are getting blocked on a synchronised block in LocalizedTextUtil.findResourceBundle. Attached is the below stack trace. We have encoutnered this with two different products in our company.
> "TP-Processor678" daemon prio=10 tid=0x5c5aa1d8 nid=0x4959 waiting for monitor entry [0x52fac000..0x52fae6f0]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findResourceBundle(LocalizedTextUtil.java:218)
> 	- waiting to lock <0x67db2650> (a java.util.HashMap)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.getMessage(LocalizedTextUtil.java:602)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:643)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:689)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:360)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:293)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:173)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:88)
> 	at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:71)
> 	at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:851)
> 	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1253)
> 	at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
> 	at com.opensymphony.xwork2.util.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:81)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1305)
> 	at com.opensymphony.xwork2.util.CompoundRootAccessor.callMethod(CompoundRootAccessor.java:196)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
> 	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> 	at ognl.SimpleNode.getValue(SimpleNode.java:258)
> 	at ognl.Ognl.getValue(Ognl.java:494)
> 	at com.opensymphony.xwork2.util.OgnlUtil.getValue(OgnlUtil.java:194)
> 	at com.opensymphony.xwork2.util.OgnlValueStack.findValue(OgnlValueStack.java:238)
> 	at org.apache.struts2.components.Property.start(Property.java:136)
> 	at org.apache.struts2.views.freemarker.tags.CallbackWriter.onStart(CallbackWriter.java:72)
> 	at freemarker.core.Environment.visit(Environment.java:294)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.visit(Environment.java:297)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.process(Environment.java:188)
> 	at freemarker.template.Template.process(Template.java:237)
> 	at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:168)
> 	at org.apache.struts2.tiles.StrutsTilesRequestContext.include(StrutsTilesRequestContext.java:118)
> "TP-Processor677" daemon prio=10 tid=0x5c823708 nid=0x4958 waiting for monitor entry [0x538fd000..0x538ff670]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findResourceBundle(LocalizedTextUtil.java:218)
> 	- waiting to lock <0x67db2650> (a java.util.HashMap)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.getMessage(LocalizedTextUtil.java:602)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:393)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:293)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:173)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:88)
> 	at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:71)
> 	at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:851)
> 	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1253)
> 	at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
> 	at com.opensymphony.xwork2.util.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:81)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1305)
> 	at com.opensymphony.xwork2.util.CompoundRootAccessor.callMethod(CompoundRootAccessor.java:196)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
> 	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> 	at ognl.SimpleNode.getValue(SimpleNode.java:258)
> 	at ognl.Ognl.getValue(Ognl.java:494)
> 	at com.opensymphony.xwork2.util.OgnlUtil.getValue(OgnlUtil.java:194)
> 	at com.opensymphony.xwork2.util.OgnlValueStack.findValue(OgnlValueStack.java:238)
> 	at org.apache.struts2.components.Property.start(Property.java:136)
> 	at org.apache.struts2.views.freemarker.tags.CallbackWriter.onStart(CallbackWriter.java:72)
> 	at freemarker.core.Environment.visit(Environment.java:294)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.visit(Environment.java:297)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.process(Environment.java:188)
> 	at freemarker.template.Template.process(Template.java:237)
> 	at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:148)
> 	at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:530)
> 	at org.apache.struts2.components.UIBean.end(UIBean.java:484)
> 	at org.apache.struts2.views.freemarker.tags.CallbackWriter.afterBody(CallbackWriter.java:83)
> 	at freemarker.core.Environment.visit(Environment.java:299)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.visit(Environment.java:297)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.process(Environment.java:188)
> 	at freemarker.template.Template.process(Template.java:237)
> 	at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:168)
> "TP-Processor572" daemon prio=10 tid=0x5e507a48 nid=0x3730 waiting for monitor entry [0x563fd000..0x563ff5f0]
>    java.lang.Thread.State: BLOCKED (on object monitor)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findResourceBundle(LocalizedTextUtil.java:218)
> 	- locked <0x67db2650> (a java.util.HashMap)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.getMessage(LocalizedTextUtil.java:602)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:661)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:689)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:689)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:689)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findMessage(LocalizedTextUtil.java:689)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:360)
> 	at com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:293)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:173)
> 	at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:88)
> 	at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:71)
> 	at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:851)
> 	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1253)
> 	at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
> 	at com.opensymphony.xwork2.util.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:81)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1305)
> 	at com.opensymphony.xwork2.util.CompoundRootAccessor.callMethod(CompoundRootAccessor.java:196)
> 	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1329)
> 	at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
> 	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> 	at ognl.SimpleNode.getValue(SimpleNode.java:258)
> 	at ognl.Ognl.getValue(Ognl.java:494)
> 	at com.opensymphony.xwork2.util.OgnlUtil.getValue(OgnlUtil.java:194)
> 	at com.opensymphony.xwork2.util.OgnlValueStack.findValue(OgnlValueStack.java:238)
> 	at org.apache.struts2.components.Property.start(Property.java:136)
> 	at org.apache.struts2.views.freemarker.tags.CallbackWriter.onStart(CallbackWriter.java:72)
> 	at freemarker.core.Environment.visit(Environment.java:294)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.visit(Environment.java:297)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.process(Environment.java:188)
> 	at freemarker.template.Template.process(Template.java:237)
> 	at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:168)
> 	at org.apache.struts2.tiles.StrutsTilesRequestContext.include(StrutsTilesRequestContext.java:118)
> 	at org.apache.struts2.tiles.StrutsTilesRequestContext.dispatch(StrutsTilesRequestContext.java:84)
> 	at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:457)
> 	at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:140)
> 	at org.apache.tiles.jsp.taglib.InsertAttributeTag.render(InsertAttributeTag.java:117)
> 	at org.apache.tiles.jsp.taglib.RenderTagSupport.execute(RenderTagSupport.java:171)
> 	at org.apache.tiles.jsp.taglib.RoleSecurityTagSupport.doEndTag(RoleSecurityTagSupport.java:75)
> 	at org.apache.tiles.jsp.taglib.ContainerTagSupport.doEndTag(ContainerTagSupport.java:80)
> 	at freemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:431)
> 	at freemarker.ext.jsp.TagTransformModel$TagWriter.afterBody(TagTransformModel.java:407)
> 	at freemarker.core.Environment.visit(Environment.java:299)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.visit(Environment.java:297)
> 	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:130)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.MixedContent.accept(MixedContent.java:92)
> 	at freemarker.core.Environment.visit(Environment.java:208)
> 	at freemarker.core.Environment.process(Environment.java:188)
> 	at freemarker.template.Template.process(Template.java:237)
> 	at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:168)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.