Wicket
  1. Wicket
  2. WICKET-311

race condition between wicket.session.pagemap.LeastRecentlyAccessedEvictionStrategy and Session.getPage()

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 1.2.3
    • Fix Version/s: 1.2.7
    • Component/s: wicket
    • Labels:
      None
    • Environment:
      Glassfish, Open Portlet Container

      Description

      I'm seeing a race condition when using PortletApplication (probably because of overlapping RENDER and ACTION phases)

      One thread is stopped here:

      wicket.session.pagemap.LeastRecentlyAccessedEvictionStrategy.evict(LeastRecentlyAccessedEvictionStrategy.java:60)
      wicket.Page.endVersion(Page.java:1136)
      wicket.Page.internalOnDetach(Page.java:811)
      wicket.Component.internalDetach(Component.java:2571)
      wicket.MarkupContainer.internalDetach(MarkupContainer.java:374)
      wicket.Page.internalDetach(Page.java:300)
      wicket.request.target.component.PageRequestTarget.detach(PageRequestTarget.java:84)
      wicket.RequestCycle.detach(RequestCycle.java:807)
      wicket.RequestCycle.steps(RequestCycle.java:1102)
      wicket.RequestCycle.request(RequestCycle.java:454)
      wicket.protocol.http.portlet.WicketPortlet.render(WicketPortlet.java:250)

      The other throws an exception after 1 minute here:

      wicket.WicketRuntimeException: After 1 minute the Pagemap null is still locked by: Thread[httpWorkerThread-8080-0,10,Grizzly], giving up trying to get the page for path: 0:tabs:panel:tasklist:topToolbars:1:toolbar:span:navigator:navigation:4:pageLink
      at wicket.Session.getPage(Session.java:440)
      at wicket.protocol.http.portlet.PortletRequestTargetResolverStrategy.resolveRenderedPage(PortletRequestTargetResolverStrategy.java:214)
      at wicket.protocol.http.portlet.PortletRequestTargetResolverStrategy.resolve(PortletRequestTargetResolverStrategy.java:135)
      at wicket.request.compound.AbstractCompoundRequestCycleProcessor.resolve(AbstractCompoundRequestCycleProcessor.java:48)
      at wicket.RequestCycle.step(RequestCycle.java:992)
      at wicket.RequestCycle.steps(RequestCycle.java:1084)
      at wicket.RequestCycle.request(RequestCycle.java:454)
      at wicket.protocol.http.portlet.WicketPortlet.processAction(WicketPortlet.java:198)

        Activity

          People

          • Assignee:
            Ate Douma
            Reporter:
            János Cserép
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development