DONT FAIL FOREVER ON 1 BLACKOUT FILE loser

master
bel 2024-11-16 07:30:25 -07:00
parent 03565e4fbc
commit eb12586a40
1 changed files with 34 additions and 29 deletions

View File

@ -115,47 +115,52 @@ func Run(ctx context.Context, args []string) error {
} }
return nil return nil
}(); err != nil { }(); err != nil {
return err log.Println("failed series", series, ":", err)
} }
} }
} }
for _, cam := range cams { for _, cam := range cams {
camMovementD := strings.ReplaceAll(cam, "record", "movement") if err := func() error {
camMovementD := strings.ReplaceAll(cam, "record", "movement")
movementFiles, err := lsf(camMovementD) movementFiles, err := lsf(camMovementD)
if err != nil {
return err
}
sort.Strings(movementFiles)
var sizeOfCamDMiB int64
for _, movementFile := range movementFiles {
stat, err := os.Stat(movementFile)
if err != nil { if err != nil {
return err return err
} }
fileSizeMiB := stat.Size() / 1024 / 1024 sort.Strings(movementFiles)
sizeOfCamDMiB += fileSizeMiB
}
GiB100 := int64(100 * 1024) var sizeOfCamDMiB int64
for sizeOfCamDMiB > GiB100 && len(movementFiles) > 0 { for _, movementFile := range movementFiles {
oldestFile := movementFiles[0] stat, err := os.Stat(movementFile)
if err != nil {
oldestFileStat, err := os.Stat(oldestFile) return err
if err != nil { }
return err fileSizeMiB := stat.Size() / 1024 / 1024
} sizeOfCamDMiB += fileSizeMiB
oldestFileSizeMiB := oldestFileStat.Size() / 1024 / 1024
log.Println("deleting old file", oldestFile)
if err := os.Remove(oldestFile); err != nil {
return err
} }
sizeOfCamDMiB -= oldestFileSizeMiB GiB100 := int64(100 * 1024)
movementFiles = movementFiles[1:] for sizeOfCamDMiB > GiB100 && len(movementFiles) > 0 {
oldestFile := movementFiles[0]
oldestFileStat, err := os.Stat(oldestFile)
if err != nil {
return err
}
oldestFileSizeMiB := oldestFileStat.Size() / 1024 / 1024
log.Println("deleting old file", oldestFile)
if err := os.Remove(oldestFile); err != nil {
return err
}
sizeOfCamDMiB -= oldestFileSizeMiB
movementFiles = movementFiles[1:]
}
return nil
}(); err != nil {
log.Println("failed to cap size of cam", cam, " dir:", err)
} }
} }