From 0b64056a92290aba6a6d358fea490cd9dd0bd6bf Mon Sep 17 00:00:00 2001 From: Karol Kokoszka Date: Fri, 12 Jul 2024 19:58:42 +0200 Subject: [PATCH] rclone_client: delete file to return job it --- pkg/scyllaclient/client_rclone.go | 12 ++++++++---- pkg/service/backup/purger.go | 2 +- pkg/service/backup/worker_deduplicate.go | 4 ++-- pkg/service/backup/worker_index.go | 4 ++-- pkg/service/restore/worker.go | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/pkg/scyllaclient/client_rclone.go b/pkg/scyllaclient/client_rclone.go index ebe930b4cb..36f3cdbaa3 100644 --- a/pkg/scyllaclient/client_rclone.go +++ b/pkg/scyllaclient/client_rclone.go @@ -323,10 +323,10 @@ func (c *Client) RcloneDeleteDir(ctx context.Context, host, remotePath string) e // RcloneDeleteFile removes the single file pointed to by remotePath // Remote path format is "name:bucket/path". -func (c *Client) RcloneDeleteFile(ctx context.Context, host, remotePath string) error { +func (c *Client) RcloneDeleteFile(ctx context.Context, host, remotePath string) (int64, error) { fs, remote, err := rcloneSplitRemotePath(remotePath) if err != nil { - return err + return 0, err } p := operations.OperationsDeletefileParams{ Context: forceHost(ctx, host), @@ -336,8 +336,12 @@ func (c *Client) RcloneDeleteFile(ctx context.Context, host, remotePath string) }, Async: false, } - _, err = c.agentOps.OperationsDeletefile(&p) // nolint: errcheck - return err + resp, err := c.agentOps.OperationsDeletefile(&p) // nolint: errcheck + if err != nil { + return 0, err + } + + return resp.Payload.Jobid, nil } // RcloneDiskUsage get disk space usage. diff --git a/pkg/service/backup/purger.go b/pkg/service/backup/purger.go index ca1eddb4d5..2ea1b3b48e 100644 --- a/pkg/service/backup/purger.go +++ b/pkg/service/backup/purger.go @@ -445,7 +445,7 @@ func (p purger) onDelete(ctx context.Context, total, success, missing int) { func (p purger) deleteFile(ctx context.Context, path string) (bool, error) { p.logger.Debug(ctx, "Deleting file", "path", path) - err := p.client.RcloneDeleteFile(ctx, p.host, path) + _, err := p.client.RcloneDeleteFile(ctx, p.host, path) if scyllaclient.StatusCodeOf(err) == http.StatusNotFound { return false, nil } diff --git a/pkg/service/backup/worker_deduplicate.go b/pkg/service/backup/worker_deduplicate.go index 34f513e5cd..347ab6d2be 100644 --- a/pkg/service/backup/worker_deduplicate.go +++ b/pkg/service/backup/worker_deduplicate.go @@ -119,7 +119,7 @@ func (w *worker) basedOnUUIDGenerationAvailability(ctx context.Context, d snapsh localSSTableFileNameWithPath := path.Join(d.Path, file) w.Logger.Debug(ctx, "Removing local snapshot file (deduplication based on generation UUID)", "host", h.IP, "file", localSSTableFileNameWithPath) - if err := w.Client.RcloneDeleteFile(ctx, h.IP, localSSTableFileNameWithPath); err != nil { + if _, err := w.Client.RcloneDeleteFile(ctx, h.IP, localSSTableFileNameWithPath); err != nil { return errors.Wrapf(err, "cannot delete local snapshot's SSTable file %s", localSSTableFileNameWithPath) } } @@ -170,7 +170,7 @@ func (w *worker) basedOnCrc32Content(ctx context.Context, d snapshotDir, h hostI for _, fileToBeRemoved := range ssTableContent { localSSTableFileNameWithPath := path.Join(d.Path, fileToBeRemoved) w.Logger.Debug(ctx, "Removing local snapshot file (deduplication based on .crc32)", "host", h.IP, "file", localSSTableFileNameWithPath) - if err := w.Client.RcloneDeleteFile(ctx, h.IP, localSSTableFileNameWithPath); err != nil { + if _, err := w.Client.RcloneDeleteFile(ctx, h.IP, localSSTableFileNameWithPath); err != nil { return errors.Wrapf(err, "cannot delete local snapshot's SSTable file %s", localSSTableFileNameWithPath) } } diff --git a/pkg/service/backup/worker_index.go b/pkg/service/backup/worker_index.go index ab8d3322c2..d73f74f0e4 100644 --- a/pkg/service/backup/worker_index.go +++ b/pkg/service/backup/worker_index.go @@ -88,13 +88,13 @@ func (w *worker) indexSnapshotDirs(ctx context.Context, h hostInfo) ([]snapshotD ) mp := path.Join(d.Path, ScyllaManifest) - if err := w.Client.RcloneDeleteFile(ctx, h.IP, mp); err != nil { + if _, err := w.Client.RcloneDeleteFile(ctx, h.IP, mp); err != nil { if scyllaclient.StatusCodeOf(err) != http.StatusNotFound { w.Logger.Error(ctx, "Failed to delete local manifest file", "error", err) } } sp := path.Join(d.Path, ScyllaSchema) - if err := w.Client.RcloneDeleteFile(ctx, h.IP, sp); err != nil { + if _, err := w.Client.RcloneDeleteFile(ctx, h.IP, sp); err != nil { if scyllaclient.StatusCodeOf(err) != http.StatusNotFound { w.Logger.Error(ctx, "Failed to delete local schema file", "error", err) } diff --git a/pkg/service/restore/worker.go b/pkg/service/restore/worker.go index 31fbb11507..3e8e9cf12f 100644 --- a/pkg/service/restore/worker.go +++ b/pkg/service/restore/worker.go @@ -483,7 +483,7 @@ func (w *worker) cleanUploadDir(ctx context.Context, host, dir string, excluded for _, f := range toBeDeleted { remotePath := path.Join(dir, f) - if err := w.client.RcloneDeleteFile(ctx, host, remotePath); err != nil { + if _, err := w.client.RcloneDeleteFile(ctx, host, remotePath); err != nil { return errors.Wrapf(err, "delete file: %s on host: %s", remotePath, host) } }