Homec4science

Synchronize (hosted, clustered, Git) repositories over Conduit + HTTP

Authored by epriestley <git@epriestley.com> on Apr 19 2016, 17:03.

Description

Synchronize (hosted, clustered, Git) repositories over Conduit + HTTP

Summary:
Ref T4292. We currently synchronize hosted, clustered, Git repositories when we receive an SSH pull or push.

Additionally:

  • Synchronize before HTTP reads and writes.
  • Synchronize reads before Conduit requests.

We could relax Conduit eventually and allow Diffusion to say "it's OK to give me stale data".

We could also redirect some set of these actions to just go to the up-to-date host instead of connecting to a random host and synchronizing it. However, this potentially won't work as well at scale: if you have a larger number of servers, it sends all of the traffic to the leader immediately following a write. That can cause "thundering herd" issues, and isn't efficient if replicas are in different geographical regions and the write just went to the east coast but most clients are on the west coast. In large-scale cases, it's better to go to the local replica, wait for an update, then serve traffic from it -- particularly given that writes are relatively rare. But we can finesse this later once things are solid.

Test Plan:

  • Pushed and pulled a Git repository over HTTP.
  • Browsed a Git repository from the web UI.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T4292

Differential Revision: https://secure.phabricator.com/D15758

Details

Committed
epriestley <git@epriestley.com>Apr 19 2016, 22:05
Pushed
aubortJan 31 2017, 17:16
Parents
rPH31bc023eff76: Synchronize (hosted, git, clustered, SSH) repositories prior to reads
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHd87c500002d7: Synchronize (hosted, clustered, Git) repositories over Conduit + HTTP (authored by epriestley <git@epriestley.com>).Apr 19 2016, 22:05