[ https://issues.apache.org/jira/browse/WW-3580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13125572#comment-13125572 ] Rene Gielen commented on WW-3580: --------------------------------- Maurizio, I'm not as sure as you that a release would not make sense, given that we have other fixes in place and even a new plugin. And having a release note talking about significant performance improvements, which is what we see here, would not be too shabby :) We had similar policies for other closely related third-party libraries such as OS XWork before it was moved to Struts. Usually dropping an info in the user list that manually replacing the lib makes sense has much less effect that having a new release. That said, releasing depends on people having spare time - which is another story as just usefulness. > Critical performance issue in production environment as thread dumps are leading to OGNL 3.0 thread blocking! Website could be backed out! > ------------------------------------------------------------------------------------------------------------------------------------------ > > Key: WW-3580 > URL: https://issues.apache.org/jira/browse/WW-3580 > Project: Struts 2 > Issue Type: Bug > Environment: Struts 2.2.1 > Reporter: Shishir Saxena > Assignee: Lukasz Lenart > Priority: Blocker > Fix For: 2.3 > > Attachments: OGNLIssue.zip, Small_bugfix_on_the_performance_patch_provided_in_WW-3580_.patch, ognl-synchronization.diff, stacktrace_ognl_issue.txt > > > My web application based on Struts 2.2.1 is using OGNL 3.0. This web application is rolled into production; however, due to serious performance considerations the website is in danger of being rolled back. The thread dumps indicate 'BLOCKING' at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:804). > The thread trace is as: > "httpSSLWorkerThread-6357-6" daemon prio=3 tid=0x01a07000 nid=0xa6 waiting for monitor entry [0xb6d79000..0xb6d7faf0] > java.lang.Thread.State: BLOCKED (on object monitor) > at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:804) > - waiting to lock <0xcca6d328> (a java.lang.reflect.Method) > at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1434) > at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60) > at ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:147) > at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.getProperty(ObjectAccessor.java:17) > at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2230) > at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.getProperty(CompoundRootAccessor.java:137) > at ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2230) > at ognl.ASTProperty.getValueBody(ASTProperty.java:114) > at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) > at ognl.SimpleNode.getValue(SimpleNode.java:258) > at ognl.Ognl.getValue(Ognl.java:494) > at ognl.Ognl.getValue(Ognl.java:458) > at com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:213) > at com.opensymphony.xwork2.ognl.OgnlValueStack.getValueUsingOgnl(OgnlValueStack.java:277) > at com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValue(OgnlValueStack.java:260) > at com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValueWhenExpressionIsNotNull(OgnlValueStack.java:242) > at com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:222) > at com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:284) > at sun.reflect.GeneratedMethodAccessor111.invoke(Unknown Source) > .... > quot;httpSSLWorkerThread-6357-4" daemon prio=3 tid=0x01a56800 nid=0xa4 runnable [0xb6f79000..0xb6f7fbf0] > java.lang.Thread.State: RUNNABLE > at java.security.AccessController.$$YJP$$doPrivileged(Native Method) > at java.security.AccessController.doPrivileged(AccessController.java) > at com.sun.enterprise.security.provider.PolicyFile.addPermissions(PolicyFile.java:1333) > at com.sun.enterprise.security.provider.PolicyFile.getPermissions(PolicyFile.java:1290) > at com.sun.enterprise.security.provider.PolicyFile.getPermissions(PolicyFile.java:1256) > at com.sun.enterprise.security.provider.PolicyFile.getPermissions(PolicyFile.java:1198) > at com.sun.enterprise.security.provider.PolicyFile.implies(PolicyFile.java:1153) > at com.sun.enterprise.security.provider.BasePolicyWrapper.doImplies(BasePolicyWrapper.java:383) > at com.sun.enterprise.security.provider.BasePolicyWrapper.implies(BasePolicyWrapper.java:237) > at java.security.ProtectionDomain.implies(ProtectionDomain.java:213) > at java.security.AccessControlContext.checkPermission(AccessControlContext.java:301) > at java.security.AccessController.checkPermission(AccessController.java:546) > at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) > at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:107) > at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:839) > - locked <0xcca6d328> (a java.lang.reflect.Method) > at ognl.OgnlRuntime.getMethodValue(OgnlRuntime.java:1434) > at ognl.ObjectPropertyAccessor.getPossibleProperty(ObjectPropertyAccessor.java:60) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira