func()

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
}