Pass context to lockRepo

This commit is contained in:
Michael Eischer 2020-08-09 13:24:47 +02:00
parent 37a5e2d681
commit 0c9efa9c2a
21 changed files with 30 additions and 30 deletions

View File

@ -496,7 +496,7 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, term *termstatus.Termina
if !gopts.JSON { if !gopts.JSON {
p.V("lock repository") p.V("lock repository")
} }
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -42,7 +42,7 @@ func runCat(gopts GlobalOptions, args []string) error {
return err return err
} }
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -158,7 +158,7 @@ func runCheck(opts CheckOptions, gopts GlobalOptions, args []string) error {
if !gopts.NoLock { if !gopts.NoLock {
Verbosef("create exclusive lock for repository\n") Verbosef("create exclusive lock for repository\n")
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -65,13 +65,13 @@ func runCopy(opts CopyOptions, gopts GlobalOptions, args []string) error {
return err return err
} }
srcLock, err := lockRepo(srcRepo) srcLock, err := lockRepo(ctx, srcRepo)
defer unlockRepo(srcLock) defer unlockRepo(srcLock)
if err != nil { if err != nil {
return err return err
} }
dstLock, err := lockRepo(dstRepo) dstLock, err := lockRepo(ctx, dstRepo)
defer unlockRepo(dstLock) defer unlockRepo(dstLock)
if err != nil { if err != nil {
return err return err

View File

@ -134,7 +134,7 @@ func runDebugDump(gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -332,7 +332,7 @@ func runDiff(opts DiffOptions, gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -140,7 +140,7 @@ func runDump(opts DumpOptions, gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -529,7 +529,7 @@ func runFind(opts FindOptions, gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -88,7 +88,7 @@ func runForget(opts ForgetOptions, gopts GlobalOptions, args []string) error {
return err return err
} }
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -188,7 +188,7 @@ func runKey(gopts GlobalOptions, args []string) error {
switch args[0] { switch args[0] {
case "list": case "list":
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err
@ -196,7 +196,7 @@ func runKey(gopts GlobalOptions, args []string) error {
return listKeys(ctx, repo, gopts) return listKeys(ctx, repo, gopts)
case "add": case "add":
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err
@ -204,7 +204,7 @@ func runKey(gopts GlobalOptions, args []string) error {
return addKey(gopts, repo) return addKey(gopts, repo)
case "remove": case "remove":
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err
@ -217,7 +217,7 @@ func runKey(gopts GlobalOptions, args []string) error {
return deleteKey(gopts.ctx, repo, id) return deleteKey(gopts.ctx, repo, id)
case "passwd": case "passwd":
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -40,7 +40,7 @@ func runList(cmd *cobra.Command, opts GlobalOptions, args []string) error {
} }
if !opts.NoLock { if !opts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(opts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -99,7 +99,7 @@ func runMigrate(opts MigrateOptions, gopts GlobalOptions, args []string) error {
return err return err
} }
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -91,7 +91,7 @@ func mount(opts MountOptions, gopts GlobalOptions, mountpoint string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -50,7 +50,7 @@ func runPrune(gopts GlobalOptions) error {
return err return err
} }
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -38,7 +38,7 @@ func runRebuildIndex(gopts GlobalOptions) error {
return err return err
} }
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -43,7 +43,7 @@ func runRecover(gopts GlobalOptions) error {
return err return err
} }
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -102,7 +102,7 @@ func runRestore(opts RestoreOptions, gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -61,7 +61,7 @@ func runSnapshots(opts SnapshotOptions, gopts GlobalOptions, args []string) erro
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -91,7 +91,7 @@ func runStats(gopts GlobalOptions, args []string) error {
} }
if !gopts.NoLock { if !gopts.NoLock {
lock, err := lockRepo(repo) lock, err := lockRepo(ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -119,7 +119,7 @@ func runTag(opts TagOptions, gopts GlobalOptions, args []string) error {
if !gopts.NoLock { if !gopts.NoLock {
Verbosef("create exclusive lock for repository\n") Verbosef("create exclusive lock for repository\n")
lock, err := lockRepoExclusive(repo) lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock) defer unlockRepo(lock)
if err != nil { if err != nil {
return err return err

View File

@ -18,21 +18,21 @@ var globalLocks struct {
sync.Mutex sync.Mutex
} }
func lockRepo(repo *repository.Repository) (*restic.Lock, error) { func lockRepo(ctx context.Context, repo *repository.Repository) (*restic.Lock, error) {
return lockRepository(repo, false) return lockRepository(ctx, repo, false)
} }
func lockRepoExclusive(repo *repository.Repository) (*restic.Lock, error) { func lockRepoExclusive(ctx context.Context, repo *repository.Repository) (*restic.Lock, error) {
return lockRepository(repo, true) return lockRepository(ctx, repo, true)
} }
func lockRepository(repo *repository.Repository, exclusive bool) (*restic.Lock, error) { func lockRepository(ctx context.Context, repo *repository.Repository, exclusive bool) (*restic.Lock, error) {
lockFn := restic.NewLock lockFn := restic.NewLock
if exclusive { if exclusive {
lockFn = restic.NewExclusiveLock lockFn = restic.NewExclusiveLock
} }
lock, err := lockFn(context.TODO(), repo) lock, err := lockFn(ctx, repo)
if err != nil { if err != nil {
return nil, errors.WithMessage(err, "unable to create lock in backend") return nil, errors.WithMessage(err, "unable to create lock in backend")
} }