Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
This ticket introduces an atomic commit transaction for file store.
- Before calling FileStoreCommitImpl#commit, user should first call FileStoreCommitImpl#filterCommitted to make sure this commit is not done before.
- Before committing, it will first check for conflicts by checking if all files to be removed currently exists.
- After that it use the external FileStoreCommitImpl#lock (if provided) or the atomic rename of the file system to ensure atomicity.
- If commit fails due to conflicts or exception it tries its best to clean up and aborts.
- If atomic rename fails it tries again after reading the latest snapshot from step 2.
Attachments
Issue Links
- links to