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) 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