Retry rename on lock induced failures (re-fix) (#16461) (#16462)

Backport #16461

Unfortunately #16435 asserts the wrong error and should use
os.LinkError not os.PathError.

Fix #16439

Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
zeripath 2021-07-16 18:22:44 +01:00 committed by GitHub
parent bae0e1d773
commit 0f11c5f592
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1 additions and 1 deletions

View File

@ -64,7 +64,7 @@ func Rename(oldpath, newpath string) error {
if err == nil { if err == nil {
break break
} }
unwrapped := err.(*os.PathError).Err unwrapped := err.(*os.LinkError).Err
if unwrapped == syscall.EBUSY || unwrapped == syscall.ENOTEMPTY || unwrapped == syscall.EPERM || unwrapped == syscall.EMFILE || unwrapped == syscall.ENFILE { if unwrapped == syscall.EBUSY || unwrapped == syscall.ENOTEMPTY || unwrapped == syscall.EPERM || unwrapped == syscall.EMFILE || unwrapped == syscall.ENFILE {
// try again // try again
<-time.After(100 * time.Millisecond) <-time.After(100 * time.Millisecond)