fuse: Only reload list of snapshots once per minute

This commit is contained in:
Alexander Neumann 2017-12-28 13:18:27 +01:00
parent 8d8456590c
commit 3f7d85360a
2 changed files with 12 additions and 1 deletions

View file

@ -4,6 +4,8 @@
package fuse
import (
"time"
"github.com/restic/restic/internal/debug"
"github.com/restic/restic/internal/restic"
@ -27,7 +29,9 @@ type Root struct {
inode uint64
snapshots restic.Snapshots
blobSizeCache *BlobSizeCache
snCount int
snCount int
lastCheck time.Time
*MetaDir
}

View file

@ -221,14 +221,21 @@ func isElem(e string, list []string) bool {
return false
}
const minSnapshotsReloadTime = 60 * time.Second
// update snapshots if repository has changed
func updateSnapshots(ctx context.Context, root *Root) {
if time.Since(root.lastCheck) < minSnapshotsReloadTime {
return
}
snapshots := restic.FindFilteredSnapshots(ctx, root.repo, root.cfg.Host, root.cfg.Tags, root.cfg.Paths)
if root.snCount != len(snapshots) {
root.snCount = len(snapshots)
root.repo.LoadIndex(ctx)
root.snapshots = snapshots
}
root.lastCheck = time.Now()
}
// read snapshot timestamps from the current repository-state.