Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-4687

ConcurrentModificationException with IFeedback instances that contain other IFeedback instances

    Details

      Description

      When an implementation of IFeedback contains a component that dynamically constructs a child instance of IFeedback, a ConcurrentModificationException will occur. This is easily replicated through the use of a FormComponentFeedbackBorder which contains a refreshing repeater (ListView) that constructs a FeedbackPanel.

      Here is the exception:

      java.util.ConcurrentModificationException
      at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
      at java.util.AbstractList$Itr.next(AbstractList.java:343)
      at org.apache.wicket.Component.internalPrepareForRender(Component.java:2212)
      at org.apache.wicket.Page.internalPrepareForRender(Page.java:246)
      at org.apache.wicket.Component.render(Component.java:2281)
      at org.apache.wicket.Page.renderPage(Page.java:1020)
      at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:115)
      at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:237)
      at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165)
      at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814)
      at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
      at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253)
      at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210)
      at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281)
      at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
      at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
      at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
      at org.eclipse.jetty.server.Server.handle(Server.java:348)
      at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452)
      at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:884)
      at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:938)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
      at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46)
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603)
      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538)
      at java.lang.Thread.run(Thread.java:662)

      1. feedbackIssue.zip
        10 kB
        Curtis Crabb

        Activity

        Hide
        ccrabb Curtis Crabb added a comment -

        Attached is a quick start where the exception occurs rendering the HomePage.

        Show
        ccrabb Curtis Crabb added a comment - Attached is a quick start where the exception occurs rendering the HomePage.

          People

          • Assignee:
            mgrigorov Martin Grigorov
            Reporter:
            ccrabb Curtis Crabb
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development