chore(stcrashreceiver): compact diskstore in-memory representation
Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user