struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-4573) NPE/ concurrent modification exception
Date Mon, 04 Jan 2016 19:13:39 GMT

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

ASF subversion and git services commented on WW-4573:
-----------------------------------------------------

Commit 1158b0adda67eaf9ab021b8b6d0376d4f13e81ba in struts's branch refs/heads/support-2-3
from Victor Sosa
[ https://git-wip-us.apache.org/repos/asf?p=struts.git;h=1158b0a ]

fix for WW-4573

NPE/ concurrent modification exception

using a CopyOnWriteArrayList. This is to keep Memory consistency on the
ValueStack.


> NPE/ concurrent modification exception
> --------------------------------------
>
>                 Key: WW-4573
>                 URL: https://issues.apache.org/jira/browse/WW-4573
>             Project: Struts 2
>          Issue Type: Bug
>    Affects Versions: 2.3.24
>            Reporter: adam brin
>            Priority: Minor
>             Fix For: 2.3.25, 2.5
>
>
> Apologies for the lack of contextual information, it appears that there were no other
errors logged that add context. But, we're seeing a few of these each day in our production
exception logs.  It looks like something may have changed in how the ValueStack has been referenced
/called and thus is causing a concurrent modification exception.
> {code}
> ERROR 2015-11-29 09:21:43,987 389933021 [ajp-bio-8009-exec-6841 []] (CommonsLogger.java:42)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor - null
> org.apache.struts2.StrutsException
>         at org.apache.struts2.components.UIBean.end(UIBean.java:540) ~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.views.freemarker.tags.CallbackWriter.afterBody(CallbackWriter.java:84)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at freemarker.core.Environment.visitAndTransform(Environment.java:427) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.UnifiedCall.accept(UnifiedCall.java:107) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IfBlock.accept(IfBlock.java:48) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Macro$Context.runMacro(Macro.java:184) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.invoke(Environment.java:701) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IteratorBlock$IterationContext.executeNestedBlockInner(IteratorBlock.java:240)
~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IteratorBlock$IterationContext.executeNestedBlock(IteratorBlock.java:220)
~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:194)
~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visitIteratorBlock(Environment.java:572) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:78) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IteratorBlock.accept(IteratorBlock.java:64) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.EscapeBlock.accept(EscapeBlock.java:48) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.process(Environment.java:302) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.template.Template.process(Template.java:325) ~[freemarker-2.3.23.jar:2.3.23]
>         at org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:223)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:191)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:369)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:273)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:76)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.interceptor.MessageStoreInterceptor.intercept(MessageStoreInterceptor.java:197)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.tdar.struts.interceptor.HttpMethodInterceptor.intercept(HttpMethodInterceptor.java:29)
~[HttpMethodInterceptor.class:?]
>         at org.tdar.struts.interceptor.HttpsInterceptor.doHttpIntercept(HttpsInterceptor.java:52)
~[HttpsInterceptor.class:?]
>         at org.tdar.struts.interceptor.HttpsInterceptor.intercept(HttpsInterceptor.java:34)
~[HttpsInterceptor.class:?]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.tdar.struts.interceptor.CacheControlInterceptor.intercept(CacheControlInterceptor.java:40)
~[CacheControlInterceptor.class:?]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.tdar.struts.interceptor.SessionSecurityInterceptor.intercept(SessionSecurityInterceptor.java:85)
~[SessionSecurityInterceptor.class:?]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.tdar.struts.interceptor.ActivityLoggingInterceptor.intercept(ActivityLoggingInterceptor.java:69)
~[ActivityLoggingInterceptor.class:?]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
~[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)
[xwork-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564)
[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:93)
[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
[sitemesh-2.4.2.jar:?]
>         at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
[sitemesh-2.4.2.jar:?]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:91)
[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:151)
[spring-orm-4.2.2.RELEASE.jar:4.2.2.RELEASE]
>         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
[spring-web-4.2.2.RELEASE.jar:4.2.2.RELEASE]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
[urlrewritefilter-4.0.4.jar:4.0.4]
>         at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) [urlrewritefilter-4.0.4.jar:4.0.4]
>         at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
[urlrewritefilter-4.0.4.jar:4.0.4]
>         at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
[urlrewritefilter-4.0.4.jar:4.0.4]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
[log4j-web-2.4.1.jar:2.4.1]
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
[tomcat-catalina-7.0.52.jar:7.0.52]
>         at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193) [tomcat-coyote-7.0.52.jar:7.0.52]
>         at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
[tomcat-coyote-7.0.52.jar:7.0.52]
>         at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
[tomcat-coyote-7.0.52.jar:7.0.52]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[?:1.8.0_66]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[?:1.8.0_66]
>         at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66]
> Caused by: java.util.ConcurrentModificationException
>         at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) ~[?:1.8.0_66]
>         at java.util.ArrayList$Itr.next(ArrayList.java:851) ~[?:1.8.0_66]
>         at org.apache.struts2.components.IteratorComponent.end(IteratorComponent.java:333)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.views.freemarker.tags.CallbackWriter.afterBody(CallbackWriter.java:84)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at freemarker.core.Environment.visitAndTransform(Environment.java:427) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.UnifiedCall.accept(UnifiedCall.java:107) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visitByHiddingParent(Environment.java:345) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.IfBlock.accept(IfBlock.java:48) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.MixedContent.accept(MixedContent.java:54) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.visit(Environment.java:324) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.core.Environment.process(Environment.java:302) ~[freemarker-2.3.23.jar:2.3.23]
>         at freemarker.template.Template.process(Template.java:325) ~[freemarker-2.3.23.jar:2.3.23]
>         at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:158)
~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.components.UIBean.mergeTemplate(UIBean.java:584) ~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         at org.apache.struts2.components.UIBean.end(UIBean.java:538) ~[struts2-core-2.3.24.1.jar:2.3.24.1]
>         ... 119 more
> DEBUG 2015-11-29 09:21:44,034 389933068 [ajp-bio-8009-exec-6812 []] (ActivityLoggingInterceptor.java:78)
org.tdar.struts.interceptor.ActivityLoggingInterceptor - >> activity end: GET:/search/advanced?groups[0].starti:
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message