From f144920ed555ae8da0c944cc4043f391f1fc0caf Mon Sep 17 00:00:00 2001 From: Jayson Wang Date: Mon, 30 May 2022 15:54:32 +0800 Subject: [PATCH] fix handling of maxKeys in SearchKey --- changelog/unreleased/pull-3776 | 10 ++++++++++ internal/repository/key.go | 1 + 2 files changed, 11 insertions(+) create mode 100644 changelog/unreleased/pull-3776 diff --git a/changelog/unreleased/pull-3776 b/changelog/unreleased/pull-3776 new file mode 100644 index 000000000..dd836c736 --- /dev/null +++ b/changelog/unreleased/pull-3776 @@ -0,0 +1,10 @@ +Bugfix: Limit number of key files tested while opening a repository + +Previously, restic tested the password against every key in the repository, when +there are more and more keys in the repository, opening the repository becomes +slower and slower. + +Now restic tests password up to 20 times on the key file in the repository, or +you can use `-key-hint=` to specify the key file to be used. + +https://github.com/restic/restic/pull/3776 diff --git a/internal/repository/key.go b/internal/repository/key.go index 8c62d7e36..67f27f204 100644 --- a/internal/repository/key.go +++ b/internal/repository/key.go @@ -137,6 +137,7 @@ func SearchKey(ctx context.Context, s *Repository, password string, maxKeys int, // try at most maxKeys keys in repo err = s.Backend().List(listCtx, restic.KeyFile, func(fi restic.FileInfo) error { + checked++ if maxKeys > 0 && checked > maxKeys { return ErrMaxKeysReached }