sftp: fix directory creation races
If mkdir fails then before this change it would have thrown an error. After this change, if the error indicated that the directory already exists then the error is not returned to the user. This fixes a race condition when two rclone threads are trying to create the same directory.
This commit is contained in:
parent
6ce0168ba5
commit
67240bd541
1 changed files with 4 additions and 0 deletions
|
@ -1171,6 +1171,10 @@ func (f *Fs) mkdir(ctx context.Context, dirPath string) error {
|
|||
err = c.sftpClient.Mkdir(dirPath)
|
||||
f.putSftpConnection(&c, err)
|
||||
if err != nil {
|
||||
if os.IsExist(err) {
|
||||
fs.Debugf(f, "directory %q exists after Mkdir is attempted", dirPath)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("mkdir %q failed: %w", dirPath, err)
|
||||
}
|
||||
return nil
|
||||
|
|
Loading…
Reference in a new issue