Fix the goroutine variable capturing in removeObjectsOneByOne
This patch fixes classic golang for-loop variable capturing issue that leeds to incorrect results in goroutines. This is fixed in latest versions of golang, but this project uses go 1.15, so it won't work as expected by an author.
This commit is contained in:
parent
25401592e1
commit
da3638eb56
1 changed files with 5 additions and 5 deletions
|
@ -197,15 +197,15 @@ func (client *s3Client) removeObjectsOneByOne(bucketName, prefix string) error {
|
||||||
|
|
||||||
for object := range objectsCh {
|
for object := range objectsCh {
|
||||||
guardCh <- 1
|
guardCh <- 1
|
||||||
go func() {
|
go func(obj minio.ObjectInfo) {
|
||||||
err := client.minio.RemoveObject(client.ctx, bucketName, object.Key,
|
err := client.minio.RemoveObject(client.ctx, bucketName, obj.Key,
|
||||||
minio.RemoveObjectOptions{VersionID: object.VersionID})
|
minio.RemoveObjectOptions{VersionID: obj.VersionID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Failed to remove object %s, error: %s", object.Key, err)
|
glog.Errorf("Failed to remove object %s, error: %s", obj.Key, err)
|
||||||
removeErrors++
|
removeErrors++
|
||||||
}
|
}
|
||||||
<- guardCh
|
<- guardCh
|
||||||
}()
|
}(object)
|
||||||
}
|
}
|
||||||
for i := 0; i < parallelism; i++ {
|
for i := 0; i < parallelism; i++ {
|
||||||
guardCh <- 1
|
guardCh <- 1
|
||||||
|
|
Loading…
Reference in a new issue