mirror of
https://github.com/restic/restic.git
synced 2025-12-03 22:21:47 +00:00
Fix O(n) backend list calls in FindFilteredSnapshots
When resolving snapshotIDs in FindFilteredSnapshots either FindLatestSnapshot or FindSnapshot is called. Both operations issue a list operation to the backend. When for example passing a long list of snapshot ids to `forget` this could lead to a large number of list operations.
This commit is contained in:
@@ -81,6 +81,10 @@ func (m *memorizedLister) List(ctx context.Context, t restic.FileType, fn func(r
|
||||
}
|
||||
|
||||
func MemorizeList(ctx context.Context, be restic.Lister, t restic.FileType) (restic.Lister, error) {
|
||||
if _, ok := be.(*memorizedLister); ok {
|
||||
return be, nil
|
||||
}
|
||||
|
||||
var fileInfos []restic.FileInfo
|
||||
err := be.List(ctx, t, func(fi restic.FileInfo) error {
|
||||
fileInfos = append(fileInfos, fi)
|
||||
|
||||
Reference in New Issue
Block a user