more cache issues
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"git.kapelle.org/niklas/s3browser/internal/cache"
|
||||
"git.kapelle.org/niklas/s3browser/internal/helper"
|
||||
types "git.kapelle.org/niklas/s3browser/internal/types"
|
||||
"github.com/graph-gophers/dataloader"
|
||||
@@ -17,26 +18,43 @@ type Loader struct {
|
||||
listObjectsRecursiveLoader *dataloader.Loader
|
||||
statObjectLoader *dataloader.Loader
|
||||
listBucketsLoader *dataloader.Loader
|
||||
|
||||
listObjectsLoaderCache cache.S3Cache
|
||||
listObjectsRecursiveLoaderCache cache.S3Cache
|
||||
statObjectLoaderCache cache.S3Cache
|
||||
listBucketsLoaderCache cache.S3Cache
|
||||
}
|
||||
|
||||
func NewLoader(config types.AppConfig) *Loader {
|
||||
listObjectsLoaderCache := &dataloader.NoCache{}
|
||||
listObjectsRecursiveLoaderCache := &dataloader.NoCache{}
|
||||
statObjectLoaderCache := cache.NewTTLCache(config.CacheTTL, config.CacheCleanup)
|
||||
listBucketsLoaderCache := cache.NewTTLCache(config.CacheTTL, config.CacheCleanup)
|
||||
|
||||
return &Loader{
|
||||
listObjectsLoader: dataloader.NewBatchedLoader(
|
||||
listObjectsBatch,
|
||||
dataloader.WithCache(&dataloader.NoCache{}),
|
||||
dataloader.WithCache(listObjectsLoaderCache),
|
||||
),
|
||||
listObjectsLoaderCache: listObjectsLoaderCache,
|
||||
|
||||
listObjectsRecursiveLoader: dataloader.NewBatchedLoader(
|
||||
listObjectsRecursiveBatch,
|
||||
dataloader.WithCache(&dataloader.NoCache{}),
|
||||
dataloader.WithCache(listObjectsRecursiveLoaderCache),
|
||||
),
|
||||
listObjectsRecursiveLoaderCache: listObjectsRecursiveLoaderCache,
|
||||
|
||||
statObjectLoader: dataloader.NewBatchedLoader(
|
||||
statObjectBatch,
|
||||
dataloader.WithCache(&dataloader.NoCache{}),
|
||||
dataloader.WithCache(statObjectLoaderCache),
|
||||
),
|
||||
statObjectLoaderCache: statObjectLoaderCache,
|
||||
|
||||
listBucketsLoader: dataloader.NewBatchedLoader(
|
||||
listBucketsBatch,
|
||||
dataloader.WithCache(&dataloader.NoCache{}),
|
||||
dataloader.WithCache(listBucketsLoaderCache),
|
||||
),
|
||||
listBucketsLoaderCache: listBucketsLoaderCache,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,16 +161,17 @@ func (l *Loader) GetFilesRecursive(ctx context.Context, path types.ID) ([]types.
|
||||
return files, nil
|
||||
}
|
||||
|
||||
func (l *Loader) InvalidateCacheForFile(ctx context.Context, id types.ID) {
|
||||
func (l *Loader) InvalidedCacheForId(ctx context.Context, id types.ID) {
|
||||
parent := id.Parent()
|
||||
|
||||
l.statObjectLoader.Clear(ctx, id)
|
||||
|
||||
// Code below is useless for now until we use a propper cache for "listObjectsLoader" and "listObjectsRecursiveLoader"
|
||||
// TODO: implement cache invalidation for "listObjectsLoader" and "listObjectsRecursiveLoader"
|
||||
l.listObjectsLoader.Clear(ctx, id).Clear(ctx, parent)
|
||||
}
|
||||
|
||||
func (l *Loader) InvalidateCacheForDir(ctx context.Context, path types.ID) {
|
||||
parent := helper.GetParentDir(path)
|
||||
|
||||
l.listObjectsLoader.Clear(ctx, path).Clear(ctx, parent)
|
||||
l.listObjectsRecursiveLoader.Clear(ctx, path).Clear(ctx, parent)
|
||||
// Remove up from recursive list
|
||||
for rParent := parent; rParent != nil; rParent = rParent.Parent() {
|
||||
l.listObjectsRecursiveLoader.Clear(ctx, rParent)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user