Uploaded image for project: 'Isis'
  1. Isis
  2. ISIS-777

RO Viewer is not thread-safe for concurrent requests.

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: core-1.4.0
    • Fix Version/s: core-1.5.0
    • Component/s: Core
    • Labels:
      None

      Description

      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

        Attachments

          Activity

            People

            • Assignee:
              danhaywood Dan Haywood
              Reporter:
              danhaywood Dan Haywood
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: