diff options
author | zeripath <art27@cantab.net> | 2020-08-11 21:05:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-11 21:05:34 +0100 |
commit | 74bd9691c685942798f2761607731697498ceeae (patch) | |
tree | 531d661263b839ccf8aa6af73bfb6710984f0dd9 /services | |
parent | faa676cc8b4419ac56fbf9d009ea8c6b79834024 (diff) | |
download | gitea-74bd9691c685942798f2761607731697498ceeae.tar.gz gitea-74bd9691c685942798f2761607731697498ceeae.zip |
Re-attempt to delete temporary upload if the file is locked by another process (#12447)
Replace all calls to os.Remove/os.RemoveAll by retrying util.Remove/util.RemoveAll and remove circular dependencies from util.
Fix #12339
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: silverwind <me@silverwind.io>
Diffstat (limited to 'services')
-rw-r--r-- | services/pull/check.go | 7 | ||||
-rw-r--r-- | services/pull/patch.go | 3 | ||||
-rw-r--r-- | services/pull/pull.go | 4 | ||||
-rw-r--r-- | services/release/release.go | 4 |
4 files changed, 12 insertions, 6 deletions
diff --git a/services/pull/check.go b/services/pull/check.go index ea91f3a862..d6817bc81b 100644 --- a/services/pull/check.go +++ b/services/pull/check.go @@ -20,6 +20,7 @@ import ( "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/queue" "code.gitea.io/gitea/modules/timeutil" + "code.gitea.io/gitea/modules/util" "github.com/unknwon/com" ) @@ -82,7 +83,11 @@ func getMergeCommit(pr *models.PullRequest) (*git.Commit, error) { if err != nil { return nil, fmt.Errorf("Failed to create temp dir for repository %s: %v", pr.BaseRepo.RepoPath(), err) } - defer os.RemoveAll(indexTmpPath) + defer func() { + if err := util.RemoveAll(indexTmpPath); err != nil { + log.Warn("Unable to remove temporary index path: %s: Error: %v", indexTmpPath, err) + } + }() headFile := pr.GetGitRefName() diff --git a/services/pull/patch.go b/services/pull/patch.go index 776bfdb751..9b894b781c 100644 --- a/services/pull/patch.go +++ b/services/pull/patch.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/util" ) // DownloadDiffOrPatch will write the patch for the pr to the writer @@ -80,7 +81,7 @@ func TestPatch(pr *models.PullRequest) error { return fmt.Errorf("Unable to create temporary patch file! Error: %v", err) } defer func() { - _ = os.Remove(tmpPatchFile.Name()) + _ = util.Remove(tmpPatchFile.Name()) }() if err := gitRepo.GetDiff(pr.MergeBase, "tracking", tmpPatchFile); err != nil { diff --git a/services/pull/pull.go b/services/pull/pull.go index b94a46639a..e624b182aa 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -10,7 +10,6 @@ import ( "context" "encoding/json" "fmt" - "os" "path" "strings" "time" @@ -21,6 +20,7 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/util" issue_service "code.gitea.io/gitea/services/issue" "github.com/unknwon/com" @@ -436,7 +436,7 @@ func PushToBaseRepo(pr *models.PullRequest) (err error) { // Remove head in case there is a conflict. file := path.Join(pr.BaseRepo.RepoPath(), headFile) - _ = os.Remove(file) + _ = util.Remove(file) if err = pr.LoadIssue(); err != nil { return fmt.Errorf("unable to load issue %d for pr %d: %v", pr.IssueID, pr.ID, err) diff --git a/services/release/release.go b/services/release/release.go index 2fc3cb199b..c308c19f24 100644 --- a/services/release/release.go +++ b/services/release/release.go @@ -6,7 +6,6 @@ package release import ( "fmt" - "os" "strings" "code.gitea.io/gitea/models" @@ -15,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/timeutil" + "code.gitea.io/gitea/modules/util" ) func createTag(gitRepo *git.Repository, rel *models.Release) error { @@ -168,7 +168,7 @@ func DeleteReleaseByID(id int64, doer *models.User, delTag bool) error { for i := range rel.Attachments { attachment := rel.Attachments[i] - if err := os.RemoveAll(attachment.LocalPath()); err != nil { + if err := util.RemoveAll(attachment.LocalPath()); err != nil { log.Error("Delete attachment %s of release %s failed: %v", attachment.UUID, rel.ID, err) } } |