Make logical sets of storage changes transactional
kellpossible opened this issue · 1 comments
kellpossible commented
At the moment, we have logical sets of changes to the storage which can fail halfway, and leave the file system in an indeterminate/incorrect state which is difficult to recover from. It would be good if we can ensure that these changes can be treated as a transaction that must succeed, otherwise all changes will be reversed, leaving the file system in its original state before the transaction was attempted.
kellpossible commented
Libraries that look interesting could perhaps be used or inspiration for solving this:
- https://github.com/lostatc/acid-store
- https://github.com/zboxfs/zbox
- https://github.com/facebook/rocksdb/wiki/Transactions
- https://www.sqlite.org/lang_transaction.html
Switching to Sqlite or RocksDB for storage has been suggested before, this could be an additional point in their favour.