diff options
author | John Cai <jcai@gitlab.com> | 2019-05-03 01:25:09 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2019-05-12 20:33:23 +0300 |
commit | 3ea85097e8a57f2114aee65d79fee1b354768383 (patch) | |
tree | 9ed21c22611935ecbbd17a5ab6505845089e6301 /doc | |
parent | d2fbeabebfbbdf83fede4e4f939eeac22c661c5e (diff) |
Document HA replication logic
Diffstat (limited to 'doc')
-rw-r--r-- | doc/design_ha.md | 18 |
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 |