From df318ed3708374fc5a79c0c8a21b3dedc1a5f640 Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Tue, 7 Apr 2020 13:13:18 +0200 Subject: [PATCH] lib/db: Don't get blocklists on drop and missing continue (ref #6457) (#6502) --- lib/db/lowlevel.go | 3 ++- lib/db/transactions.go | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/db/lowlevel.go b/lib/db/lowlevel.go index f62956bd1..67ead0596 100644 --- a/lib/db/lowlevel.go +++ b/lib/db/lowlevel.go @@ -406,6 +406,7 @@ func (db *Lowlevel) checkGlobals(folder []byte, meta *metadataTracker) error { if err := t.Delete(dbi.Key()); err != nil { return err } + continue } // Check the global version list for consistency. An issue in previous @@ -430,7 +431,7 @@ func (db *Lowlevel) checkGlobals(folder []byte, meta *metadataTracker) error { newVL.Versions = append(newVL.Versions, version) if i == 0 { - if fi, ok, err := t.getFileByKey(dk); err != nil { + if fi, ok, err := t.getFileTrunc(dk, true); err != nil { return err } else if ok { meta.addFile(protocol.GlobalDeviceID, fi) diff --git a/lib/db/transactions.go b/lib/db/transactions.go index 234d548f6..e006e89c0 100644 --- a/lib/db/transactions.go +++ b/lib/db/transactions.go @@ -488,7 +488,7 @@ func (t readWriteTransaction) updateGlobal(gk, keyBuf, folder, device []byte, fi name := []byte(file.Name) - var global protocol.FileInfo + var global FileIntf if insertedAt == 0 { // Inserted a new newest version global = file @@ -497,7 +497,7 @@ func (t readWriteTransaction) updateGlobal(gk, keyBuf, folder, device []byte, fi if err != nil { return nil, false, err } - new, ok, err := t.getFileByKey(keyBuf) + new, ok, err := t.getFileTrunc(keyBuf, true) if err != nil || !ok { return keyBuf, false, err } @@ -530,7 +530,7 @@ func (t readWriteTransaction) updateGlobal(gk, keyBuf, folder, device []byte, fi if err != nil { return nil, false, err } - oldFile, ok, err := t.getFileByKey(keyBuf) + oldFile, ok, err := t.getFileTrunc(keyBuf, true) if err != nil { return nil, false, err } @@ -554,7 +554,7 @@ func (t readWriteTransaction) updateGlobal(gk, keyBuf, folder, device []byte, fi // updateLocalNeed checks whether the given file is still needed on the local // device according to the version list and global FileInfo given and updates // the db accordingly. -func (t readWriteTransaction) updateLocalNeed(keyBuf, folder, name []byte, fl VersionList, global protocol.FileInfo) ([]byte, error) { +func (t readWriteTransaction) updateLocalNeed(keyBuf, folder, name []byte, fl VersionList, global FileIntf) ([]byte, error) { var err error keyBuf, err = t.keyer.GenerateNeedFileKey(keyBuf, folder, name) if err != nil { @@ -631,7 +631,7 @@ func (t readWriteTransaction) removeFromGlobal(gk, keyBuf, folder, device []byte if err != nil { return nil, err } - if f, ok, err := t.getFileByKey(keyBuf); err != nil { + if f, ok, err := t.getFileTrunc(keyBuf, true); err != nil { return nil, err } else if ok { meta.removeFile(protocol.GlobalDeviceID, f) @@ -657,7 +657,7 @@ func (t readWriteTransaction) removeFromGlobal(gk, keyBuf, folder, device []byte if err != nil { return nil, err } - global, ok, err := t.getFileByKey(keyBuf) + global, ok, err := t.getFileTrunc(keyBuf, true) if err != nil { return nil, err }