mirror of
https://github.com/minio/minio.git
synced 2025-01-26 14:13:16 -05:00
fix: race in deleting objects during batch expiry (#19054)
This commit is contained in:
parent
912a0031b7
commit
1118b285d3
@ -572,7 +572,11 @@ func (r *BatchJobExpire) Start(ctx context.Context, api ObjectLayer, job BatchJo
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
expireCh := make(chan []expireObjInfo, workerSize)
|
expireCh := make(chan []expireObjInfo, workerSize)
|
||||||
go batchObjsForDelete(ctx, r, ri, job, api, wk, expireCh)
|
expireDoneCh := make(chan struct{})
|
||||||
|
go func() {
|
||||||
|
defer close(expireDoneCh)
|
||||||
|
batchObjsForDelete(ctx, r, ri, job, api, wk, expireCh)
|
||||||
|
}()
|
||||||
|
|
||||||
var (
|
var (
|
||||||
prevObj ObjectInfo
|
prevObj ObjectInfo
|
||||||
@ -651,7 +655,8 @@ func (r *BatchJobExpire) Start(ctx context.Context, api ObjectLayer, job BatchJo
|
|||||||
}
|
}
|
||||||
xioutil.SafeClose(expireCh)
|
xioutil.SafeClose(expireCh)
|
||||||
|
|
||||||
wk.Wait() // waits for all expire goroutines to complete
|
<-expireDoneCh // waits for the expire goroutine to complete
|
||||||
|
wk.Wait() // waits for all expire workers to retire
|
||||||
|
|
||||||
ri.Complete = ri.ObjectsFailed == 0
|
ri.Complete = ri.ObjectsFailed == 0
|
||||||
ri.Failed = ri.ObjectsFailed > 0
|
ri.Failed = ri.ObjectsFailed > 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user