refactor: retry file remove/rename when a file is busy and clean up os detection (#38588)

Rename functions "util.Remove" (remove.go) to "util.RemoveWithRetry"
(file_retry.go) and add comments to clarify their behaviors, also add
tests.

Refactor callers: when no concurrent access (cmd cli, migration, app
init, test), use "os.Xxx" directly.

More details are in `modules/util/file_retry.go`

By the way, clean up OS (windows) detection, make FileURLToPath test
always run
This commit is contained in:
wxiaoguang
2026-07-23 14:31:29 +00:00
committed by GitHub
parent c4fc4d363b
commit e992b0a7cc
32 changed files with 225 additions and 225 deletions
@@ -61,8 +61,8 @@ func rewriteAllPrincipalKeys(ctx context.Context) error {
return err
}
defer func() {
t.Close()
os.Remove(tmpPath)
_ = t.Close()
_ = util.RemoveWithRetry(tmpPath)
}()
if setting.SSH.AuthorizedPrincipalsBackup {
@@ -83,8 +83,8 @@ func rewriteAllPrincipalKeys(ctx context.Context) error {
return err
}
t.Close()
return util.Rename(tmpPath, fPath)
_ = t.Close()
return util.RenameWithRetry(tmpPath, fPath)
}
func regeneratePrincipalKeys(ctx context.Context, t io.Writer) error {