You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2014/05/10 23:56:52 UTC

[jira] [Created] (ISIS-777) RO Viewer is not thread-safe for concurrent requests.

Dan Haywood created ISIS-777:
--------------------------------

             Summary: RO Viewer is not thread-safe for concurrent requests.
                 Key: ISIS-777
                 URL: https://issues.apache.org/jira/browse/ISIS-777
             Project: Isis
          Issue Type: Bug
          Components: Viewer: RestfulObjects
    Affects Versions: viewer-restfulobjects-2.2.0
            Reporter: Dan Haywood
            Assignee: Dan Haywood
            Priority: Critical
             Fix For: viewer-restfulobjects-2.3.0


scenario is:
- actions/listAll/invoke
   - returning a list of references
- forEach($get(...)) 
   - multiple pending requests to similar resources at same time.

Intermittent errors, one or more of these requests will fail with 500; has stack trace:

{
  "message" : "java.util.ConcurrentModificationException",
 
  "stackTrace" : [
    "java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)",
     "java.util.ArrayList$Itr.next(ArrayList.java:831)",
         "com.google.common.collect.Iterators$7.computeNext(Iterators.java:646)",
         "com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)",
         "com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)",
         "com.google.common.collect.Iterators.addAll(Iterators.java:356)",
         "com.google.common.collect.Lists.newArrayList(Lists.java:146)",
         "com.google.common.collect.Lists.newArrayList(Lists.java:128)",
         "org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.getObjectActions(ObjectSpecificationAbstract.java:744)",
         "org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.getObjectActions(ObjectSpecificationAbstract.java:758)",
         "org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer.withMembers(DomainObjectReprRenderer.java:215)",
\n "org.apache.isis.viewer.restfulobjects.rendering.domainobjects.DomainObjectReprRenderer.render(DomainObjectReprRenderer.java:150)",
"org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.responseOfOk(ResourceAbstract.java:209)",
"org.apache.isis.viewer.restfulobjects.server.resources.ResourceAbstract.responseOfOk(ResourceAbstract.java:204)",
"org.apache.isis.viewer.restfulobjects.server.resources.DomainResourceHelper.objectRepresentation(DomainResourceHelper.java:195)",
"org.apache.isis.viewer.restfulobjects.server.resources.DomainObjectResourceServerside.object(DomainObjectResourceServerside.java:112)",
"sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)",
"sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"java.lang.reflect.Method.invoke(Method.java:606)",
"org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)",
"org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)",
"org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)",
"org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)",
"org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)",
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)",
"org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)",
"org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)",
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)",
"org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)",
"javax.servlet.http.HttpServlet.service(HttpServlet.java:725)",
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)",
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)",
"org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:41)",
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)",
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)",
"org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:320)",
"org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:409)",
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)",
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)",
"org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)",
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)",
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)",
"org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)",
"org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)",
"org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)",
"org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)",
"org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)",
"org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)",
"org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)",
"org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)",
"org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)",
"org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)",
"org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)",
"org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)",
"org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)",
"org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)",
"org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)",
"org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)",
"org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)",
"org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)",
"org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:651)",
"org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)",
"org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2451)",
"org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2440)",
"java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)",
"java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)",
"java.lang.Thread.run(Thread.java:744)" ],
  "causedBy" : null




--
This message was sent by Atlassian JIRA
(v6.2#6252)