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

Flushing the FileStore might return before data is persisted

    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

        1. failure.txt
          8 kB
          Francesco Mari

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: