feat(transcode): add cache pruning and config options
* Added config option to set size of transcode cache and cadence to enforce that sizing via ejection. * Added cache eject to contrib/config. * Added error return for CacheEject(). Changed to use WalkDir() instead of Walk(). * Lint fix. * Added universal lock for cache eject. * Removed accidentally committed binary.
This commit is contained in:
@@ -93,6 +93,9 @@ func main() {
|
||||
|
||||
deprecatedConfGenreSplit := flag.String("genre-split", "", "(deprecated, see multi-value settings)")
|
||||
|
||||
confTranscodeCacheSize := flag.Int("transcode-cache-size", 0, "size of the transcode cache in MB (0 = no limit) (optional)")
|
||||
confTranscodeEjectInterval := flag.Int("transcode-eject-interval", 0, "interval (in minutes) to eject transcode cache (0 = never) (optional)")
|
||||
|
||||
flag.Parse()
|
||||
flagconf.ParseEnv()
|
||||
flagconf.ParseConfig(*confConfigPath)
|
||||
@@ -201,6 +204,7 @@ func main() {
|
||||
transcoder := transcode.NewCachingTranscoder(
|
||||
transcode.NewFFmpegTranscoder(),
|
||||
cacheDirAudio,
|
||||
*confTranscodeCacheSize,
|
||||
)
|
||||
|
||||
lastfmClientKeySecretFunc := func() (string, string, error) {
|
||||
@@ -404,6 +408,21 @@ func main() {
|
||||
return nil
|
||||
})
|
||||
|
||||
errgrp.Go(func() error {
|
||||
if *confTranscodeEjectInterval == 0 || *confTranscodeCacheSize == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
defer logJob("transcode cache eject")()
|
||||
|
||||
ctxTick(ctx, time.Duration(*confTranscodeEjectInterval)*time.Minute, func() {
|
||||
if err := transcoder.CacheEject(); err != nil {
|
||||
log.Printf("error ejecting transcode cache: %v", err)
|
||||
}
|
||||
})
|
||||
return nil
|
||||
})
|
||||
|
||||
errgrp.Go(func() error {
|
||||
if *confScanIntervalMins == 0 {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user