AcidFS is a Python filesystem that allows interaction with ACID semantics, using transactions.
Here are some key features of "AcidFS":
· Changes to the filesystem will only be persisted when a transaction is committed and if the transaction succeeds.
· Within the scope of a transaction, your application will only see a view of the filesystem consistent with that filesystem's state at the beginning of the transaction. Concurrent writes do not affect the current context.
· A full history of all changes is available, since files are stored in a backing `Git` repository. The standard `Git` toolchain can be used to recall past states, roll back particular changes, replicate the repository remotely, etc.
· Changes to a `AcidFS` filesystem are synced automatically with any other database making use of the `transaction` package and its two phase commit protocol, eg. `ZODB` or `SQLAlchemy`.
· Only platforms where `fcntl` is available are supported. This excludes Microsoft Windows and probably the JVM as well.
· Kernel level locking is used to manage concurrency. This means `AcidFS` cannot handle multiple application servers writing to a shared network drive.
· The type of locking used only synchronizes other instances of `AcidFS`. Other processes manipulating the `Git` repository without using `AcidFS` could cause a race condition. A repository used by `AcidFS` should only be written to by `AcidFS` in order to avoid unpleasant race conditions.