forked from TrueCloudLab/restic
fuse: Only reload list of snapshots once per minute
This commit is contained in:
parent
8d8456590c
commit
3f7d85360a
2 changed files with 12 additions and 1 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue