[ https://issues.apache.org/jira/browse/WW-4062?focusedWorklogId=929994&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-929994 ]
ASF GitHub Bot logged work on WW-4062: -------------------------------------- Author: ASF GitHub Bot Created on: 13/Aug/24 08:42 Start Date: 13/Aug/24 08:42 Worklog Time Spent: 10m Work Description: sonarcloud[bot] commented on PR #1021: URL: https://github.com/apache/struts/pull/1021#issuecomment-2285693390 ## [](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1021) **Quality Gate passed** Issues  [0 New issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1021&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  [0 Accepted issues](https://sonarcloud.io/project/issues?id=apache_struts&pullRequest=1021&issueStatuses=ACCEPTED) Measures  [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_struts&pullRequest=1021&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  [100.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1021&metric=new_coverage&view=list)  [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_struts&pullRequest=1021&metric=new_duplicated_lines_density&view=list) [See analysis details on SonarCloud](https://sonarcloud.io/dashboard?id=apache_struts&pullRequest=1021) Issue Time Tracking ------------------- Worklog Id: (was: 929994) Time Spent: 1h (was: 50m) > Invalid OGNL expressions are not cached > --------------------------------------- > > Key: WW-4062 > URL: https://issues.apache.org/jira/browse/WW-4062 > Project: Struts 2 > Issue Type: Bug > Components: Value Stack > Affects Versions: 2.3.14 > Reporter: Saulius Tvarijonas > Priority: Major > Fix For: 6.7.0 > > Attachments: WW-4062.PNG > > Time Spent: 1h > Remaining Estimate: 0h > > I am using velocity to render results page. During performance optimizations > I noticed significant memory usage from > *com.opensymphony.xwork2.ognl.OgnlUtil#compile*. There is caching implemented > in OgnlUtil, but if expression compilation fails, it is not cached. > I am not really sure if this problem is in struts or velocity engine. But > situation is following: > # In velocity template trying to render string *<p>$!foo</p>* > # If value is null, velocity calls > *org.apache.velocity.runtime.parser.node.ASTReference#getNullString* > # Internally there is call to *context.get(".literal." + nullString)* > # And this ".literal." expression always reaches *OgnlUtil#compile* and > compilation fails. > Below is stacktrace for more details: > {code} > at com.opensymphony.xwork2.ognl.OgnlUtil.compile(OgnlUtil.java:248) > at com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:236) > at > com.opensymphony.xwork2.ognl.OgnlValueStack.getValueUsingOgnl(OgnlValueStack.java:291) > at > com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValue(OgnlValueStack.java:274) > at > com.opensymphony.xwork2.ognl.OgnlValueStack.tryFindValueWhenExpressionIsNotNull(OgnlValueStack.java:256) > at > com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:236) > at > com.opensymphony.xwork2.ognl.OgnlValueStack.findValue(OgnlValueStack.java:298) > at > org.apache.struts2.dispatcher.StrutsRequestWrapper.getAttribute(StrutsRequestWrapper.java:82) > at org.apache.velocity.tools.view.context.ChainedContext.getAttribute(Unknown > Source:-1) > at org.apache.velocity.tools.view.context.ChainedContext.internalGet(Unknown > Source:-1) > at org.apache.velocity.context.AbstractContext.get(AbstractContext.java:193) > at > org.apache.velocity.context.InternalContextAdapterImpl.get(InternalContextAdapterImpl.java:267) > at > org.apache.velocity.runtime.parser.node.ASTReference.getNullString(ASTReference.java:510) > at > org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:465) > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) > at > org.apache.velocity.runtime.parser.node.ASTStringLiteral.value(ASTStringLiteral.java:330) > at > org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) > at > org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) > at org.apache.velocity.runtime.directive.Parse.render(Parse.java:260) > at > org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207) > at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) > at org.apache.velocity.Template.merge(Template.java:356) > at org.apache.velocity.Template.merge(Template.java:260) > at > org.apache.struts2.dispatcher.VelocityResult.doExecute(VelocityResult.java:156) > at > org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)