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

deadlock contention for sessions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 1.2.3, 1.3.0-beta1
    • wicket
    • None

    Description

      I have a bunch of custom image thumbnails that each take a little while to serve up.
      With lots of them on the page at once I'm seeing what looks like a deadlock going on for the session objects. 1.2.2 didn't do this.

      Here's an edited thread-dump. There are lots of these:

      "http-8080-Processor26" daemon prio=1 tid=0x08875a60 nid=0x5480 waiting for monitor entry [0xa5ef9000..0xa5efee60]
      at wicket.request.compound.DefaultRequestTargetResolverStrategy.resolve(DefaultRequestTargetResolverStrategy.java:102)

      • waiting to lock <0xab6ee028> (a com.foo.MyWebSession)
        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.WicketServlet.doGet(WicketServlet.java:219)
        [...]

      One of these:
      "http-8080-Processor23" daemon prio=1 tid=0x082a7988 nid=0x547a waiting for monitor entry [0xa5af8000..0xa5afd0e0]
      at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)

      • waiting to lock <0xab6ee028> (a com.foo.MyWebSession)
        at wicket.RequestCycle.step(RequestCycle.java:1010)
        at wicket.RequestCycle.steps(RequestCycle.java:1084)
        at wicket.RequestCycle.request(RequestCycle.java:454)
        at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
        [...]

      And one of these:
      "http-8080-Processor20" daemon prio=1 tid=0x082a6978 nid=0x5116 in Object.wait() [0xa57f2000..0xa57f7160]
      at java.lang.Object.wait(Native Method)

      • waiting on <0xab7695c8> (a java.util.HashMap)
        at wicket.Session.getPage(Session.java:427)
      • locked <0xab7695c8> (a java.util.HashMap)
        at wicket.request.compound.DefaultRequestTargetResolverStrategy.resolveRenderedPage(DefaultRequestTargetResolverStrategy.java:215)
        at wicket.request.compound.DefaultRequestTargetResolverStrategy.resolve(DefaultRequestTargetResolverStrategy.java:152)
      • locked <0xab6ee028> (a com.foo.MyWebSession)
        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.WicketServlet.doGet(WicketServlet.java:219)
        [...]

      Let me know if you need any more info. I can probably make an example webapp if required, but hopefully this will be sufficient.

      As far as I'm concerned it's pretty critical, as the entire session falls over and never recovers, so I'm marking it as a blocker. Hope that's OK.

      Attachments

        1. ResourceTestPage.java
          3 kB
          Alastair Maw
        2. ResourceTestPage.html
          0.1 kB
          Alastair Maw
        3. DefaultRequestTargetResolverStrategy-WICKET-8.patch
          2 kB
          Alastair Maw

        Activity

          People

            jcompagner Johan Compagner
            almaw Alastair Maw
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: