Skip to content

Make Praefect work with Object Pools by rewriting storage locations on both repositories

Some RPCs have multiple repositories in the message, and we need to rewrite the storage for all of them.

Namely the object pool rpcs are this way--when we create an object pool, link it, etc the origin and the repo should reside on the same praefect gitaly node.

Right now we are only rewriting the target repository's storage, which results in errors like:

  GRPC::InvalidArgument:
       3:origin has different storage than object pool
     # ./lib/gitlab/gitaly_client.rb:154:in `call'
     # ./lib/gitlab/gitaly_client/object_pool_service.rb:45:in `fetch'

This issue does not cover making praefect replication work with object pools. #2080 (closed) is for that.

Edited by John Cai
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information