Uploaded image for project: 'Jackrabbit Oak'
  1. Jackrabbit Oak
  2. OAK-6888

Flushing the FileStore might return before data is persisted

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.7.11, 1.8.0
    • segment-tar
    • None

    Description

      The implementation of FileStore#flush might return before all the expected data is persisted on disk.

      The root cause of this behaviour is the implementation of TarRevisions#flush, which is too lenient when acquiring the lock for the journal file. If a background flush operation is in progress and a user calls FileStore#flush, that method will immediately return because the lock of the journal file is already owned by the background flush operation. The caller doesn't have the guarantee that everything committed before FileStore#flush is persisted to disk when the method returns.

      A fix for this problem might be to create an additional implementation of flush. The current implementation, needed for the background flush thread, will not be exposed to the users of FileStore. The new implementation of TarRevisions#flush should have stricter semantics and always guarantee that the persisted head contains everything visible to the user of FileStore before the flush operation was started.

      Attachments

        Issue Links

        Activity

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

          People

            frm Francesco Mari
            frm Francesco Mari
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment