in lib/store/cleanup.go [263:303]
func (m *cleanupManager) ttlBasedCleanup(
op base.FileOp, tti time.Duration, ttl time.Duration, aggroUtilLowerThreshold int, diskUsageFn diskUsageFn) (scannedBytes int64, err error) {
var lowThresholdBytes uint64 = 0
respectLowThreshold := false
var dInfo diskspaceutil.UsageInfo
if aggroUtilLowerThreshold != 0 {
dInfo, err = diskUsageFn()
if err != nil {
log.Errorf("Error getting disk usage info %s: %s", op, err)
} else {
respectLowThreshold = true
lowThresholdBytes = (dInfo.TotalBytes * uint64(aggroUtilLowerThreshold)) / 100
}
}
names, err := op.ListNames()
if err != nil {
return 0, fmt.Errorf("list names: %s", err)
}
for _, name := range names {
info, err := op.GetFileStat(name)
if err != nil {
log.With("name", name).Errorf("Error getting file stat: %s", err)
continue
}
ready, err := m.readyForDeletion(op, name, info, tti, ttl)
if err != nil {
log.With("name", name).Errorf("Error checking if file expired: %s", err)
}
lowThresholdBreached := respectLowThreshold && ((dInfo.UsedBytes - uint64(scannedBytes)) <= lowThresholdBytes)
if ready && !lowThresholdBreached {
if err := op.DeleteFile(name); err != nil && err != base.ErrFilePersisted {
log.With("name", name).Errorf("Error deleting expired file: %s", err)
}
}
scannedBytes += info.Size()
}
return scannedBytes, nil
}