fix: move context timeout closer to network for Delete calls (#10897)

allowing for disconnects to be limited to the drive
themselves instead of disconnecting all drives.
This commit is contained in:
Harshavardhana 2020-11-13 16:56:45 -08:00 committed by GitHub
parent 0784a0c33a
commit 17a5ff51ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 10 deletions

View File

@ -24,7 +24,6 @@ import (
"net/http"
"path"
"sync"
"time"
"github.com/minio/minio-go/v7/pkg/tags"
xhttp "github.com/minio/minio/cmd/http"
@ -774,13 +773,7 @@ func (er erasureObjects) deleteObject(ctx context.Context, bucket, object string
if disks[index] == nil {
return errDiskNotFound
}
tctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
err := cleanupDir(tctx, disks[index], minioMetaTmpBucket, tmpObj)
if err != nil && err != errVolumeNotFound {
return err
}
return nil
return cleanupDir(ctx, disks[index], minioMetaTmpBucket, tmpObj)
}, index)
}

View File

@ -137,7 +137,14 @@ func cleanupDir(ctx context.Context, storage StorageAPI, volume, dirPath string)
}
return nil
}
err := delFunc(retainSlash(pathJoin(dirPath)))
if IsErrIgnored(err, []error{
errVolumeNotFound,
errVolumeAccessDenied,
}...) {
return nil
}
return err
}

View File

@ -323,7 +323,10 @@ func (client *storageRESTClient) DeleteVersion(ctx context.Context, volume, path
return err
}
respBody, err := client.call(ctx, storageRESTMethodDeleteVersion, values, &buffer, -1)
tctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
respBody, err := client.call(tctx, storageRESTMethodDeleteVersion, values, &buffer, -1)
defer http.DrainBody(respBody)
return err
}
@ -503,7 +506,9 @@ func (client *storageRESTClient) Delete(ctx context.Context, volume string, path
values.Set(storageRESTVolume, volume)
values.Set(storageRESTFilePath, path)
values.Set(storageRESTRecursive, strconv.FormatBool(recursive))
respBody, err := client.call(ctx, storageRESTMethodDeleteFile, values, nil, -1)
tctx, cancel := context.WithTimeout(ctx, 5*time.Second)
defer cancel()
respBody, err := client.call(tctx, storageRESTMethodDeleteFile, values, nil, -1)
defer http.DrainBody(respBody)
return err
}