seashell / drago

☁️ Securely connect anything with WireGuard® and manage all your networks from a single place.

Home Page:https://seashell.github.io/drago

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.