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 'internal/cli/gitalybackup')
-rw-r--r--internal/cli/gitalybackup/create.go2
-rw-r--r--internal/cli/gitalybackup/restore.go34
-rw-r--r--internal/cli/gitalybackup/restore_test.go20
3 files changed, 24 insertions, 32 deletions
diff --git a/internal/cli/gitalybackup/create.go b/internal/cli/gitalybackup/create.go
index be7e75cdb..4ad653490 100644
--- a/internal/cli/gitalybackup/create.go
+++ b/internal/cli/gitalybackup/create.go
@@ -174,7 +174,7 @@ func (cmd *createSubcommand) run(ctx context.Context, logger log.Logger, stdin i
}))
}
- if _, err := pipeline.Done(); err != nil {
+ if err := pipeline.Done(); err != nil {
return fmt.Errorf("create: %w", err)
}
return nil
diff --git a/internal/cli/gitalybackup/restore.go b/internal/cli/gitalybackup/restore.go
index defffa223..de9e2cd3d 100644
--- a/internal/cli/gitalybackup/restore.go
+++ b/internal/cli/gitalybackup/restore.go
@@ -135,18 +135,15 @@ func (cmd *restoreSubcommand) run(ctx context.Context, logger log.Logger, stdin
manager = backup.NewManager(sink, locator, pool)
}
- // Get the set of existing repositories keyed by storage. We'll later use this to determine any
- // dangling repos that should be removed.
- existingRepos := make(map[string][]*gitalypb.Repository)
for _, storageName := range cmd.removeAllRepositories {
- repos, err := manager.ListRepositories(ctx, &backup.ListRepositoriesRequest{
+ err := manager.RemoveAllRepositories(ctx, &backup.RemoveAllRepositoriesRequest{
StorageName: storageName,
})
if err != nil {
- logger.WithError(err).WithField("storage_name", storageName).Warn("failed to list repositories")
+ // Treat RemoveAll failures as soft failures until we can determine
+ // how often it fails.
+ logger.WithError(err).WithField("storage_name", storageName).Warn("failed to remove all repositories")
}
-
- existingRepos[storageName] = repos
}
var opts []backup.PipelineOption
@@ -181,29 +178,8 @@ func (cmd *restoreSubcommand) run(ctx context.Context, logger log.Logger, stdin
}))
}
- restoredRepos, err := pipeline.Done()
- if err != nil {
+ if err := pipeline.Done(); err != nil {
return fmt.Errorf("restore: %w", err)
}
-
- var removalErrors []error
- for storageName, repos := range existingRepos {
- for _, repo := range repos {
- if dangling := restoredRepos[storageName][repo]; dangling == struct{}{} {
- // If we have dangling repos (those which exist in the storage but
- // weren't part of the restore), they need to be deleted so the
- // state of repos in Gitaly matches that in the Rails DB.
- if err := manager.RemoveRepository(ctx, &backup.RemoveRepositoryRequest{Repo: repo}); err != nil {
- removalErrors = append(removalErrors, fmt.Errorf("storage_name %q relative_path %q: %w", storageName, repo.RelativePath, err))
- }
- }
- }
- }
-
- if len(removalErrors) > 0 {
- return fmt.Errorf("remove dangling repositories: %d failures encountered: %w",
- len(removalErrors), errors.Join(removalErrors...))
- }
-
return nil
}
diff --git a/internal/cli/gitalybackup/restore_test.go b/internal/cli/gitalybackup/restore_test.go
index 6d235525c..4eae52e4c 100644
--- a/internal/cli/gitalybackup/restore_test.go
+++ b/internal/cli/gitalybackup/restore_test.go
@@ -75,6 +75,12 @@ Issue: https://gitlab.com/gitlab-org/gitaly/-/issues/5269`)
}))
}
+ require.NoError(t, encoder.Encode(map[string]string{
+ "address": "invalid",
+ "token": "invalid",
+ "relative_path": "invalid",
+ }))
+
ctx = testhelper.MergeIncomingMetadata(ctx, testcfg.GitalyServersMetadataFromCfg(t, cfg))
args := []string{
@@ -97,7 +103,9 @@ Issue: https://gitlab.com/gitlab-org/gitaly/-/issues/5269`)
require.DirExists(t, existRepoPath)
- require.NoError(t, cmd.RunContext(ctx, args))
+ require.EqualError(t,
+ cmd.RunContext(ctx, args),
+ "restore: pipeline: 1 failures encountered:\n - invalid: manager: could not dial source: invalid connection string: \"invalid\"\n")
require.NoDirExists(t, existRepoPath)
@@ -171,6 +179,12 @@ Issue: https://gitlab.com/gitlab-org/gitaly/-/issues/5269`)
}))
}
+ require.NoError(t, encoder.Encode(map[string]string{
+ "address": "invalid",
+ "token": "invalid",
+ "relative_path": "invalid",
+ }))
+
ctx = testhelper.MergeIncomingMetadata(ctx, testcfg.GitalyServersMetadataFromCfg(t, cfg))
args := []string{
@@ -193,7 +207,9 @@ Issue: https://gitlab.com/gitlab-org/gitaly/-/issues/5269`)
require.DirExists(t, existRepoPath)
- require.NoError(t, cmd.RunContext(ctx, args))
+ require.EqualError(t,
+ cmd.RunContext(ctx, args),
+ "restore: pipeline: 1 failures encountered:\n - invalid: server-side restore: could not dial source: invalid connection string: \"invalid\"\n")
require.NoDirExists(t, existRepoPath)