Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJohn Cai <jcai@gitlab.com>2019-05-03 01:25:09 +0300
committerJohn Cai <jcai@gitlab.com>2019-05-12 20:33:23 +0300
commit3ea85097e8a57f2114aee65d79fee1b354768383 (patch)
tree9ed21c22611935ecbbd17a5ab6505845089e6301 /doc
parentd2fbeabebfbbdf83fede4e4f939eeac22c661c5e (diff)
Document HA replication logic
Diffstat (limited to 'doc')
-rw-r--r--doc/design_ha.md18
1 files changed, 17 insertions, 1 deletions
diff --git a/doc/design_ha.md b/doc/design_ha.md
index e446dc85e..fb3cf523d 100644
--- a/doc/design_ha.md
+++ b/doc/design_ha.md
@@ -1,7 +1,7 @@
# Gitaly High Availability (HA) Design
Gitaly HA is an active-active cluster configuration for resilient git operations. [Refer to our specific requirements](https://gitlab.com/gitlab-org/gitaly/issues/1332).
-Refer to [epic &289][epic] for current issues and discussions revolving around
+Refer to [epic &289][epic] for current issues and discussions revolving around
HA MVC development.
## Terminology
@@ -93,6 +93,22 @@ sequenceDiagram
*Note: Once Node-A propagates changes to a peer, Node-A is no longer the critical path for subsequent propagations. If Node-A fails after a second peer is propagated, that second peer can become the new leader and resume replications.*
+##### Replication Logic
+
+Here are the steps during a Gitaly client GRPC call intercepted by Praefect:
+
+```mermaid
+graph TD
+ A[Gitaly Client]-->B{Does RPC Mutate a repository?}
+ B-->| yes | C[Peek into RPC Stream to determine Repository]
+ B-->| no | G[Forward request to Gitaly]
+ C-->D{Scoped for repository?}
+ D-->| yes | E[Get target repository from message]
+ D-->| no | G
+ E-->F[Schedule Replication]
+ F-->G
+```
+
## Stages until v1.0
Rome wasn't built in a day, nor will Praefect be build in one. To iterate towards