mirror of
				https://github.com/restic/restic.git
				synced 2025-11-04 06:11:10 +00:00 
			
		
		
		
	Merge pull request #1507 from restic/fix-fuse-list-timeout
fuse: Only reload list of snapshots once per minute
This commit is contained in:
		
							
								
								
									
										3
									
								
								changelog/0.8.2/pull-1507
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								changelog/0.8.2/pull-1507
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
Enhancement: Only reload snapshots once per minute for fuse mount
 | 
			
		||||
 | 
			
		||||
https://github.com/restic/restic/pull/1507
 | 
			
		||||
@@ -3,6 +3,7 @@
 | 
			
		||||
# 
 | 
			
		||||
# The resulting changelog generated by `calens` will list all versions in
 | 
			
		||||
# exactly this order.
 | 
			
		||||
0.8.2
 | 
			
		||||
0.8.1 2017-12-27
 | 
			
		||||
0.8.0 2017-11-26
 | 
			
		||||
0.7.3 2017-09-20
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user