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

Improve synchronization in AsynchronousDataStore buffer structure

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.5-RC5.1
    • 1.5-RC6
    • wicket
    • None

    Description

      On heavy load we saw the following exception in the logs:

      java.lang.NullPointerException
      org.apache.wicket.pageStore.AsynchronousDataStore.removeData(AsynchronousDataStore.java:192)
      org.apache.wicket.pageStore.DefaultPageStore.removePageData(DefaultPageStore.java:104)
      org.apache.wicket.pageStore.DefaultPageStore.unbind(DefaultPageStore.java:149)
      org.apache.wicket.page.PageStoreManager.sessionExpired(PageStoreManager.java:407)
      org.apache.wicket.Application.sessionUnbound(Application.java:474)
      org.apache.wicket.protocol.http.WebApplication.sessionUnbound(WebApplication.java:456)
      org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound(HttpSessionStore.java:415)
      org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1788)
      org.apache.catalina.session.StandardSession.expire(StandardSession.java:866)
      org.apache.catalina.session.StandardSession.expire(StandardSession.java:740)
      org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1253)
      org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:186)
      org.apache.wicket.session.HttpSessionStore.invalidate(HttpSessionStore.java:177)
      org.apache.wicket.Session.destroy(Session.java:492)
      org.apache.wicket.Session.invalidateNow(Session.java:504)
      org.apache.wicket.Session.detach(Session.java:645)
      org.apache.wicket.request.cycle.RequestCycle.onDetach(RequestCycle.java:543)
      org.apache.wicket.request.cycle.RequestCycle.detach(RequestCycle.java:477)
      org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:255)
      org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:160)
      org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:216)
      ....

      The buffer structure "entries" may be emptied by one worker thread and tried to be emptied in another...

      Attachments

        1. AsyncDataStore.java
          8 kB
          Andrea Del Bene

        Activity

          People

            mgrigorov Martin Tzvetanov Grigorov
            mgrigorov Martin Tzvetanov Grigorov
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: