Skip to content

Remove `praefect reconcile` subcommand

Sami Hiltunen requested to merge smh-remove-reconcile-subcmd into master

This MR removes the praefect reconcile sub-command and all code associated with it. With the automatic reconciler in place since GitLab 13.4, there hasn't been really reasons to use the manual one anymore. Using the manual reconciler may even be counter productive as:

  1. It always uses one of the storages as the reference storage and replicates from it to the target storage any repositories that differ between the storages. This is not ideal as it could be that only some of the repositories are up to date on the reference and some on the other storage. Praefect checks the generations before applying replication jobs to protect agains this but this does result in unneeded replication jobs.
  2. The manual reconciler crawls the disks, which takes a long time in practice to schedule all the jobs.
  3. The manual reconciler doesn't take into account variable replication factor and replicates any missing repositories to the other storage. This may result in repositories exceeding their replication factors.
  4. The manual reconciler doesn't consider already scheduled jobs in the queue but schedules duplicate ones.

As the manual reconciler always tries to mirror whole storages, it doesn't play well together at all with variable replication factor and repository specific primaries. Due to this, there's a check in place that prevents it from running with repository-specific primaries enabled. Repository-specific primaries are always enabled since GitLab 14.0, so the command is currently unusable. Deprecation message was already added to the documentation in prior releases so we can remove it.

Closes #3558 (closed)
Closes #3628 (closed)
Doc updates gitlab!66077 (merged)

Edited by Zeger-Jan van de Weg

Merge request reports