chore(stcrashreceiver): compact diskstore in-memory representation

Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
Jakob Borg
2026-05-23 08:51:34 +02:00
parent 79423edbdf
commit b537090d91
+14 -4
View File
@@ -136,15 +136,25 @@ func (d *diskStore) Exists(path string) bool {
} }
func (d *diskStore) clean() { func (d *diskStore) clean() {
for len(d.currentFiles) > 0 && (len(d.currentFiles) > d.maxFiles || d.currentSize > d.maxBytes) { numDeleted := 0
f := d.currentFiles[0] for idx := range d.currentFiles {
if len(d.currentFiles)-numDeleted < d.maxFiles && d.currentSize < d.maxBytes {
break
}
f := d.currentFiles[idx]
log.Println("Removing", f.path) log.Println("Removing", f.path)
if err := os.Remove(f.path); err != nil { if err := os.Remove(f.path); err != nil {
log.Println("Failed to remove file:", err) log.Println("Failed to remove file:", err)
} }
d.currentFiles = d.currentFiles[1:]
d.currentSize -= f.size d.currentSize -= f.size
numDeleted = idx + 1
} }
// Compact currentFiles
copy(d.currentFiles, d.currentFiles[numDeleted:])
d.currentFiles = d.currentFiles[:len(d.currentFiles)-numDeleted]
var oldest time.Duration var oldest time.Duration
if len(d.currentFiles) > 0 { if len(d.currentFiles) > 0 {
oldest = time.Since(time.Unix(d.currentFiles[0].mtime, 0)).Truncate(time.Minute) oldest = time.Since(time.Unix(d.currentFiles[0].mtime, 0)).Truncate(time.Minute)
@@ -158,7 +168,7 @@ func (d *diskStore) clean() {
} }
func (d *diskStore) inventory() error { func (d *diskStore) inventory() error {
d.currentFiles = nil d.currentFiles = d.currentFiles[:0]
d.currentSize = 0 d.currentSize = 0
err := filepath.Walk(d.dir, func(path string, info os.FileInfo, err error) error { err := filepath.Walk(d.dir, func(path string, info os.FileInfo, err error) error {
if err != nil { if err != nil {