Atomic transactions
edufschmidt opened this issue · comments
As of now, the Drago server interacts with the repositories without any consistency guarantee. In other words, failures during the execution of more complex operations involving multiple repositories e.g., joining a network, might result in inconsistencies.
This can be overcome by the introduction of atomic transactions, which ensure that operations either succeed completely or fail completely. Etcd, Drago's storage backend, already offers support to transactions, and the very same client already used in the project (https://pkg.go.dev/go.etcd.io/etcd/clientv3) can be used for implementing this enhancement.