Skip to content

Switch statemachines to PartitionManager's KV abstraction

For #6135 (closed)

Implementations of core Raft components are using Gitaly's DB abstraction directly. This abstraction supports key namespaces, atomic, transactional, etc. However, it lacks some advanced features like linearization, conflict checks, etc. All of those features are supported in the recently introduced KV abstraction ( #6088 (closed)).

In general, the new KV abstraction is a stretch of the current WAL transaction system. We use the WAL transaction to streamline KV operations. Each operation creates a WAL transaction. Unfortunately, the KV is tight to a partition now. We'll add an easy way to manage storage-wise data in #6136 (closed).

Afterward, it makes sense to store persistent data of storage using this abstraction. This MR replaces the current one by the partition manager's one.

Merge request reports