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
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/praefect/subcmd_track_repository.go')
-rw-r--r--cmd/praefect/subcmd_track_repository.go28
1 files changed, 27 insertions, 1 deletions
diff --git a/cmd/praefect/subcmd_track_repository.go b/cmd/praefect/subcmd_track_repository.go
index 810df39a8..e55fe3bba 100644
--- a/cmd/praefect/subcmd_track_repository.go
+++ b/cmd/praefect/subcmd_track_repository.go
@@ -10,6 +10,7 @@ import (
"time"
"github.com/sirupsen/logrus"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/middleware/metadatahandler"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/commonerr"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/config"
"gitlab.com/gitlab-org/gitaly/v14/internal/praefect/datastore"
@@ -137,9 +138,13 @@ func (cmd *trackRepository) exec(ctx context.Context, logger logrus.FieldLogger,
return fmt.Errorf("%s: %w", trackRepoErrorPrefix, errAuthoritativeRepositoryNotExist)
}
+ store := datastore.NewPostgresRepositoryStore(db, cfg.StorageNames())
+ queue := datastore.NewPostgresReplicationEventQueue(db)
+
if err := cmd.trackRepository(
ctx,
- datastore.NewPostgresRepositoryStore(db, cfg.StorageNames()),
+ store,
+ queue,
primary,
secondaries,
savePrimary,
@@ -156,6 +161,7 @@ func (cmd *trackRepository) exec(ctx context.Context, logger logrus.FieldLogger,
func (cmd *trackRepository) trackRepository(
ctx context.Context,
ds *datastore.PostgresRepositoryStore,
+ queue datastore.ReplicationEventQueue,
primary string,
secondaries []string,
savePrimary bool,
@@ -186,6 +192,26 @@ func (cmd *trackRepository) trackRepository(
return fmt.Errorf("CreateRepository: %w", err)
}
+ correlationID := correlation.SafeRandomID()
+ for _, secondary := range secondaries {
+ event := datastore.ReplicationEvent{
+ Job: datastore.ReplicationJob{
+ RepositoryID: repositoryID,
+ Change: datastore.UpdateRepo,
+ RelativePath: cmd.relativePath,
+ VirtualStorage: cmd.virtualStorage,
+ SourceNodeStorage: primary,
+ TargetNodeStorage: secondary,
+ },
+ Meta: datastore.Params{metadatahandler.CorrelationIDKey: correlationID},
+ }
+
+ _, err := queue.Enqueue(ctx, event)
+ if err != nil {
+ return err
+ }
+ }
+
return nil
}