Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-3079

InvalidItemStateException occurs when add one node to repository and get his current uuid by DavEx in clustered mode

Agile BoardAttach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      When add new node to repository via DavEx in clustered environment and try to retrieve his uuid, InvalidItemStateException is thrown.
      This is because each http request from a client DavExt could be answered by any node in the cluster(thinking in one load balancer plus clustered nodes) and if this node are not up to date, exception is thrown.

      I extended the SessionProviderImpl from org.apache.jackrabbit.server, and override the method getSession so that in each getSession call, I do a session.refresh() before of return the session. It works fine.

      I wonder if in future releases of JR DavEx would be good idea to have a configuration parameter to enforce the synchronization between cluster nodes, or if Session.refresh() from jcr2spi layer would support synchronization between cluster nodes as Session.refresh() in core api does.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            mmjose26 Jose Mendoza

            Dates

              Created:
              Updated:

              Slack

                Issue deployment