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>
This commit is contained in:
zeripath 2020-08-11 21:05:34 +01:00 committed by GitHub
parent faa676cc8b
commit 74bd9691c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 304 additions and 202 deletions

View file

@ -31,6 +31,7 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
repo_service "code.gitea.io/gitea/services/repository"
)
@ -391,7 +392,7 @@ func dummyInfoRefs(ctx *context.Context) {
}
defer func() {
if err := os.RemoveAll(tmpDir); err != nil {
if err := util.RemoveAll(tmpDir); err != nil {
log.Error("RemoveAll: %v", err)
}
}()

View file

@ -11,7 +11,6 @@ import (
gotemplate "html/template"
"io"
"io/ioutil"
"os"
"path"
"path/filepath"
"sort"
@ -29,6 +28,7 @@ import (
"code.gitea.io/gitea/modules/lfs"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
gogit "github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
@ -356,7 +356,7 @@ func LFSDelete(ctx *context.Context) {
// Please note a similar condition happens in models/repo.go DeleteRepository
if count == 0 {
oidPath := filepath.Join(oid[0:2], oid[2:4], oid[4:])
err = os.Remove(filepath.Join(setting.LFS.ContentPath, oidPath))
err = util.Remove(filepath.Join(setting.LFS.ContentPath, oidPath))
if err != nil {
ctx.ServerError("LFSDelete", err)
return

View file

@ -7,7 +7,6 @@ package repo
import (
"io/ioutil"
"net/http"
"os"
"testing"
"code.gitea.io/gitea/models"
@ -15,6 +14,7 @@ import (
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/test"
"code.gitea.io/gitea/modules/util"
"github.com/stretchr/testify/assert"
)
@ -31,7 +31,7 @@ func createSSHAuthorizedKeysTmpPath(t *testing.T) func() {
return func() {
setting.SSH.RootPath = oldPath
os.RemoveAll(tmpDir)
util.RemoveAll(tmpDir)
}
}