diff options
author | Sami Hiltunen <shiltunen@gitlab.com> | 2021-07-27 14:47:09 +0300 |
---|---|---|
committer | Sami Hiltunen <shiltunen@gitlab.com> | 2021-08-31 15:56:58 +0300 |
commit | b790880102f46230eec34519b8abbfd13cdaaab5 (patch) | |
tree | 1e1669e9ebe1332264e3d694bbee8b796c408116 | |
parent | 8710a86448097c24eda824c1040f9d6d22d024df (diff) |
Pass relative path to CreateRepository
CreateRepository will need to know the relative path of the repository
the client is trying to create in order to check whether a repository with
it already exists or not. This commit pipes the relative path to CreateRepository
to prepare for follow-up changes even though the relative path is not yet used.
-rw-r--r-- | internal/praefect/coordinator.go | 2 | ||||
-rw-r--r-- | internal/praefect/router.go | 2 | ||||
-rw-r--r-- | internal/praefect/router_node_manager.go | 2 | ||||
-rw-r--r-- | internal/praefect/router_per_repository.go | 2 | ||||
-rw-r--r-- | internal/praefect/router_per_repository_test.go | 2 |
5 files changed, 5 insertions, 5 deletions
diff --git a/internal/praefect/coordinator.go b/internal/praefect/coordinator.go index c77b48ecc..b4c007e3a 100644 --- a/internal/praefect/coordinator.go +++ b/internal/praefect/coordinator.go @@ -456,7 +456,7 @@ func (c *Coordinator) mutatorStreamParameters(ctx context.Context, call grpcCall var route RepositoryMutatorRoute switch change { case datastore.CreateRepo: - route, err = c.router.RouteRepositoryCreation(ctx, virtualStorage) + route, err = c.router.RouteRepositoryCreation(ctx, virtualStorage, targetRepo.RelativePath) if err != nil { return nil, fmt.Errorf("route repository creation: %w", err) } diff --git a/internal/praefect/router.go b/internal/praefect/router.go index a2147a27e..bc708ffd9 100644 --- a/internal/praefect/router.go +++ b/internal/praefect/router.go @@ -50,5 +50,5 @@ type Router interface { RouteRepositoryMutator(ctx context.Context, virtualStorage, relativePath string) (RepositoryMutatorRoute, error) // RouteRepositoryCreation decides returns the primary and secondaries that should handle the repository creation // request. It is up to the caller to store the assignments and primary information after finishing the RPC. - RouteRepositoryCreation(ctx context.Context, virtualStorage string) (RepositoryMutatorRoute, error) + RouteRepositoryCreation(ctx context.Context, virtualStorage, relativePath string) (RepositoryMutatorRoute, error) } diff --git a/internal/praefect/router_node_manager.go b/internal/praefect/router_node_manager.go index 015a8985a..4395d4dfc 100644 --- a/internal/praefect/router_node_manager.go +++ b/internal/praefect/router_node_manager.go @@ -119,7 +119,7 @@ func (r *nodeManagerRouter) RouteRepositoryMutator(ctx context.Context, virtualS // RouteRepositoryCreation includes healthy secondaries in the transaction and sets the unhealthy secondaries as // replication targets. The virtual storage's primary acts as the primary for every repository. -func (r *nodeManagerRouter) RouteRepositoryCreation(ctx context.Context, virtualStorage string) (RepositoryMutatorRoute, error) { +func (r *nodeManagerRouter) RouteRepositoryCreation(ctx context.Context, virtualStorage, relativePath string) (RepositoryMutatorRoute, error) { shard, err := r.mgr.GetShard(ctx, virtualStorage) if err != nil { return RepositoryMutatorRoute{}, fmt.Errorf("get shard: %w", err) diff --git a/internal/praefect/router_per_repository.go b/internal/praefect/router_per_repository.go index fc022cddb..3a1a98f4e 100644 --- a/internal/praefect/router_per_repository.go +++ b/internal/praefect/router_per_repository.go @@ -237,7 +237,7 @@ func (r *PerRepositoryRouter) RouteRepositoryMutator(ctx context.Context, virtua // RouteRepositoryCreation picks a random healthy node to act as the primary node and selects the secondary nodes // if assignments are enabled. Healthy secondaries take part in the transaction, unhealthy secondaries are set as // replication targets. -func (r *PerRepositoryRouter) RouteRepositoryCreation(ctx context.Context, virtualStorage string) (RepositoryMutatorRoute, error) { +func (r *PerRepositoryRouter) RouteRepositoryCreation(ctx context.Context, virtualStorage, relativePath string) (RepositoryMutatorRoute, error) { healthyNodes, err := r.healthyNodes(virtualStorage) if err != nil { return RepositoryMutatorRoute{}, err diff --git a/internal/praefect/router_per_repository_test.go b/internal/praefect/router_per_repository_test.go index 5a0a1e864..4bb27d0bf 100644 --- a/internal/praefect/router_per_repository_test.go +++ b/internal/praefect/router_per_repository_test.go @@ -557,7 +557,7 @@ func TestPerRepositoryRouter_RouteRepositoryCreation(t *testing.T) { nil, nil, map[string]int{"virtual-storage-1": tc.replicationFactor}, - ).RouteRepositoryCreation(ctx, tc.virtualStorage) + ).RouteRepositoryCreation(ctx, tc.virtualStorage, "relative-path") if tc.error != nil { require.Equal(t, tc.error, err) return |