Revert "Make caches singletons"

This commit is contained in:
Deluan 2020-10-26 10:11:02 -04:00
parent bf5318d776
commit 95cc211659
2 changed files with 26 additions and 44 deletions

View file

@ -12,7 +12,6 @@ import (
"io" "io"
"os" "os"
"strings" "strings"
"sync"
"time" "time"
"github.com/deluan/navidrome/core/cache" "github.com/deluan/navidrome/core/cache"
@ -206,23 +205,15 @@ func readFromFile(path string) ([]byte, error) {
return buf.Bytes(), nil return buf.Bytes(), nil
} }
var (
onceImageCache sync.Once
imageCache ArtworkCache
)
func NewImageCache() ArtworkCache { func NewImageCache() ArtworkCache {
onceImageCache.Do(func() { return cache.NewFileCache("Image", conf.Server.ImageCacheSize, consts.ImageCacheDir, consts.DefaultImageCacheMaxItems,
imageCache = cache.NewFileCache("Image", conf.Server.ImageCacheSize, consts.ImageCacheDir, consts.DefaultImageCacheMaxItems, func(ctx context.Context, arg cache.Item) (io.Reader, error) {
func(ctx context.Context, arg cache.Item) (io.Reader, error) { info := arg.(*imageInfo)
info := arg.(*imageInfo) reader, err := info.a.getArtwork(ctx, info.id, info.path, info.size)
reader, err := info.a.getArtwork(ctx, info.id, info.path, info.size) if err != nil {
if err != nil { log.Error(ctx, "Error loading artwork art", "path", info.path, "size", info.size, err)
log.Error(ctx, "Error loading artwork art", "path", info.path, "size", info.size, err) return nil, err
return nil, err }
} return reader, nil
return reader, nil })
})
})
return imageCache
} }

View file

@ -6,7 +6,6 @@ import (
"io" "io"
"mime" "mime"
"os" "os"
"sync"
"time" "time"
"github.com/deluan/navidrome/conf" "github.com/deluan/navidrome/conf"
@ -168,29 +167,21 @@ func selectTranscodingOptions(ctx context.Context, ds model.DataStore, mf *model
return return
} }
var (
onceTranscodingCache sync.Once
transcodingCache TranscodingCache
)
func NewTranscodingCache() TranscodingCache { func NewTranscodingCache() TranscodingCache {
onceTranscodingCache.Do(func() { return cache.NewFileCache("Transcoding", conf.Server.TranscodingCacheSize,
transcodingCache = cache.NewFileCache("Transcoding", conf.Server.TranscodingCacheSize, consts.TranscodingCacheDir, consts.DefaultTranscodingCacheMaxItems,
consts.TranscodingCacheDir, consts.DefaultTranscodingCacheMaxItems, func(ctx context.Context, arg cache.Item) (io.Reader, error) {
func(ctx context.Context, arg cache.Item) (io.Reader, error) { job := arg.(*streamJob)
job := arg.(*streamJob) t, err := job.ms.ds.Transcoding(ctx).FindByFormat(job.format)
t, err := job.ms.ds.Transcoding(ctx).FindByFormat(job.format) if err != nil {
if err != nil { log.Error(ctx, "Error loading transcoding command", "format", job.format, err)
log.Error(ctx, "Error loading transcoding command", "format", job.format, err) return nil, os.ErrInvalid
return nil, os.ErrInvalid }
} out, err := job.ms.ffm.Start(ctx, t.Command, job.mf.Path, job.bitRate)
out, err := job.ms.ffm.Start(ctx, t.Command, job.mf.Path, job.bitRate) if err != nil {
if err != nil { log.Error(ctx, "Error starting transcoder", "id", job.mf.ID, err)
log.Error(ctx, "Error starting transcoder", "id", job.mf.ID, err) return nil, os.ErrInvalid
return nil, os.ErrInvalid }
} return out, nil
return out, nil })
})
})
return transcodingCache
} }