Francesco Mari created OAK-6888:
-----------------------------------

             Summary: Flushing the FileStore might return before data is 
persisted
                 Key: OAK-6888
                 URL: https://issues.apache.org/jira/browse/OAK-6888
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: segment-tar
            Reporter: Francesco Mari
            Assignee: Francesco Mari
             Fix For: 1.8, 1.7.11


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.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to