1
mirror of https://github.com/rclone/rclone synced 2024-12-23 14:23:44 +01:00

chunker: fix finalizer already set error

Before this change, cache.PinUntilFinalized was called twice if the root pointed
to a composite multi-chunk file without metadata, resulting in a fatal "finalizer
already set" error. This change fixes the issue.
This commit is contained in:
nielash 2024-04-29 03:38:15 -04:00 committed by Nick Craig-Wood
parent 678941afc1
commit 61ab519791

View File

@ -308,7 +308,6 @@ func NewFs(ctx context.Context, name, rpath string, m configmap.Mapper) (fs.Fs,
root: rpath, root: rpath,
opt: *opt, opt: *opt,
} }
cache.PinUntilFinalized(f.base, f)
f.dirSort = true // processEntries requires that meta Objects prerun data chunks atm. f.dirSort = true // processEntries requires that meta Objects prerun data chunks atm.
if err := f.configure(opt.NameFormat, opt.MetaFormat, opt.HashType, opt.Transactions); err != nil { if err := f.configure(opt.NameFormat, opt.MetaFormat, opt.HashType, opt.Transactions); err != nil {
@ -326,9 +325,9 @@ func NewFs(ctx context.Context, name, rpath string, m configmap.Mapper) (fs.Fs,
if testErr == fs.ErrorIsFile { if testErr == fs.ErrorIsFile {
f.base = newBase f.base = newBase
err = testErr err = testErr
cache.PinUntilFinalized(f.base, f)
} }
} }
cache.PinUntilFinalized(f.base, f)
// Correct root if definitely pointing to a file // Correct root if definitely pointing to a file
if err == fs.ErrorIsFile { if err == fs.ErrorIsFile {