master: avoid timer leakage

This commit is contained in:
Chris Lu 2020-10-19 14:24:57 -07:00
parent 69f0da5d73
commit 410b818aa7

View file

@ -42,13 +42,17 @@ func batchVacuumVolumeCheck(grpcDialOption grpc.DialOption, vl *VolumeLayout, vi
}(index, dn.Url(), vid) }(index, dn.Url(), vid)
} }
vacuumLocationList := NewVolumeLocationList() vacuumLocationList := NewVolumeLocationList()
waitTimeout := time.NewTimer(30 * time.Minute)
defer waitTimeout.Stop()
for range locationlist.list { for range locationlist.list {
select { select {
case index := <-ch: case index := <-ch:
if index != -1 { if index != -1 {
vacuumLocationList.list = append(vacuumLocationList.list, locationlist.list[index]) vacuumLocationList.list = append(vacuumLocationList.list, locationlist.list[index])
} }
case <-time.After(30 * time.Minute): case <-waitTimeout.C:
return vacuumLocationList, false return vacuumLocationList, false
} }
} }
@ -81,11 +85,15 @@ func batchVacuumVolumeCompact(grpcDialOption grpc.DialOption, vl *VolumeLayout,
}(index, dn.Url(), vid) }(index, dn.Url(), vid)
} }
isVacuumSuccess := true isVacuumSuccess := true
waitTimeout := time.NewTimer(30 * time.Minute)
defer waitTimeout.Stop()
for range locationlist.list { for range locationlist.list {
select { select {
case canCommit := <-ch: case canCommit := <-ch:
isVacuumSuccess = isVacuumSuccess && canCommit isVacuumSuccess = isVacuumSuccess && canCommit
case <-time.After(30 * time.Minute): case <-waitTimeout.C:
return false return false
} }
} }