From 030104f17965a7e077798f41dc3ca11dbfd7e030 Mon Sep 17 00:00:00 2001 From: Kyle William Date: Thu, 3 Jun 2021 04:41:50 +0800 Subject: [PATCH] Delete residual file caused by network interruption and so on. Fixes #3204 (#3241) Signed-off-by: huangkai --- pkg/controller/backup_deletion_controller.go | 2 +- pkg/controller/restore_controller.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/controller/backup_deletion_controller.go b/pkg/controller/backup_deletion_controller.go index b70cadc65..3e503e81a 100644 --- a/pkg/controller/backup_deletion_controller.go +++ b/pkg/controller/backup_deletion_controller.go @@ -304,11 +304,11 @@ func (c *backupDeletionController) processRequest(req *velerov1api.DeleteBackupR if len(actions) > 0 { // Download the tarball backupFile, err := downloadToTempFile(backup.Name, backupStore, log) - defer closeAndRemoveFile(backupFile, c.logger) if err != nil { log.WithError(err).Errorf("Unable to download tarball for backup %s, skipping associated DeleteItemAction plugins", backup.Name) } else { + defer closeAndRemoveFile(backupFile, c.logger) ctx := &delete.Context{ Backup: backup, BackupReader: backupFile, diff --git a/pkg/controller/restore_controller.go b/pkg/controller/restore_controller.go index cb015742e..78472df4d 100644 --- a/pkg/controller/restore_controller.go +++ b/pkg/controller/restore_controller.go @@ -553,6 +553,9 @@ func downloadToTempFile(backupName string, backupStore persistence.BackupStore, n, err := io.Copy(file, readCloser) if err != nil { + //Temporary file has been created if we go here. And some problems occurs such as network interruption and + //so on. So we close and remove temporary file first to prevent residual file. + closeAndRemoveFile(file, logger) return nil, errors.Wrap(err, "error copying Backup to temp file") } @@ -564,6 +567,7 @@ func downloadToTempFile(backupName string, backupStore persistence.BackupStore, }).Debug("Copied Backup to file") if _, err := file.Seek(0, 0); err != nil { + closeAndRemoveFile(file, logger) return nil, errors.Wrap(err, "error resetting Backup file offset") }