GitLab Geo: Wiki Sync

Rationale

In GitLab, every Wiki, is also a git project. As we don't store it in a database, it's not being replicated.

We should be able to replicate it in Geo (#76 (closed)) as we do with any git project.

Replication

Primary Geo node should notify secondary nodes, in a similar way we do for projects, when Wiki is changed. On a secondary node, it should git fetch Wiki's git repository and update.

We can reuse the same pooler we use for projects but a different notify endpoint to make code simpler.

Checklist

  • When a wiki is updated by git on secondary node, we must enqueue and buffer this action in an specific redis queue
  • When a wiki is updated by web UI on secondary node, we must enqueue and buffer this action in an specific redis queue
  • When we pool for updated projects we must also query for updated Wikis
  • A secondary node must receive in a different endpoint bulk notifications of updated Wikis
  • When a updated wiki notification is received, it must generated async jobs for every wiki, to be updated