Skip to content

Write-ahead log repository creations

Sami Hiltunen requested to merge smh-log-repository-creations into master

This commit adds support for write-ahead logging repository creations. This is needed to make repository creations atomic and to properly replicate them as part of the write-ahead log later with Raft.

Normally the reference updates made in a transaction are verified against the repository prior to committing them. When a repository is being created, there is no existing repository to verify them against. A temporary empty repository is thus used to verify the reference updates prior to logging them. This temporary repository only exists for verifying the transaction and is removed when the transaction is finished.

Repository creations don't use a quarantine directory. When the repository is created, all of the state is new and should be logged. A quarantine directory is thus not needed to determine the new objects in the repository. Likewise, the repository creating RPCs don't use a quarantine so this allows for transparent integration. They also don't generally use the hooks, so capturing reference updates through the reference transaction hook doesn't work. Due to this, the repository's committed state is determined by reading it from the snapshot repository.

Merge request reports