Simplify updating cleanup rules

This commit is contained in:
Ingo Oppermann
2025-07-18 12:22:42 +02:00
parent 2d491caa52
commit bcc3c9aaa2
2 changed files with 21 additions and 20 deletions

View File

@@ -129,8 +129,6 @@ func (rfs *filesystem) compilePatterns(patterns []Pattern) []Pattern {
}
func (rfs *filesystem) UpdateCleanup(id string, newPatterns []Pattern) {
rfs.logger.Debug().WithField("id", id).Log("Update pattern group")
newPatterns = rfs.compilePatterns(newPatterns)
rfs.cleanupLock.Lock()
@@ -141,39 +139,32 @@ func (rfs *filesystem) UpdateCleanup(id string, newPatterns []Pattern) {
onlyCurrent, onlyNew := slices.DiffEqualer(currentPatterns, newPatterns)
patterns := []Pattern{}
for _, p := range currentPatterns {
for _, p := range newPatterns {
found := false
for _, x := range onlyCurrent {
for _, x := range onlyNew {
if p.Equal(x) == nil {
found = true
break
}
}
if !found {
patterns = append(patterns, p)
rfs.logger.Debug().WithFields(log.Fields{
"id": id,
"pattern": p.Pattern,
"max_files": p.MaxFiles,
"max_file_age": p.MaxFileAge.Seconds(),
}).Log("Keep pattern")
} else {
rfs.logger.Debug().WithFields(log.Fields{
"id": id,
"pattern": p.Pattern,
"max_files": p.MaxFiles,
"max_file_age": p.MaxFileAge.Seconds(),
}).Log("Add pattern")
}
}
for _, p := range onlyNew {
rfs.logger.Debug().WithFields(log.Fields{
"id": id,
"pattern": p.Pattern,
"max_files": p.MaxFiles,
"max_file_age": p.MaxFileAge.Seconds(),
}).Log("Add pattern")
}
patterns = append(patterns, onlyNew...)
rfs.cleanupPatterns[id] = patterns
rfs.cleanupPatterns[id] = newPatterns
for _, p := range onlyCurrent {
rfs.logger.Debug().WithFields(log.Fields{
@@ -258,10 +249,14 @@ func (rfs *filesystem) purge(patterns []Pattern) int64 {
continue
}
_, nfiles := rfs.Filesystem.RemoveList("/", fs.ListOptions{
files, nfiles := rfs.Filesystem.RemoveList("/", fs.ListOptions{
Pattern: pattern.Pattern,
})
for _, file := range files {
rfs.logger.Debug().WithField("path", file).Log("Purged file")
}
nfilesTotal += nfiles
}

View File

@@ -48,6 +48,12 @@ func TestUpdateCleanup(t *testing.T) {
require.Equal(t, cleanfs.cleanupPatterns["foobar"], patterns)
patterns[0].MaxFiles = 42
cleanfs.UpdateCleanup("foobar", patterns)
require.Equal(t, cleanfs.cleanupPatterns["foobar"], patterns)
cleanfs.UpdateCleanup("foobar", patterns[1:])
require.Equal(t, cleanfs.cleanupPatterns["foobar"], patterns[1:])