diff options
author | Jakob Borg <jakob@kastelo.net> | 2024-10-04 21:47:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-04 19:47:57 +0000 |
commit | 6d64daaba326ba8378c700e00a31e425c7c90579 (patch) | |
tree | 985e50a561c3dae3cdc9b95ae8e5dcfb77120fda | |
parent | 47f48faed7331b7ba4ad3d6775d5cffacf8931b5 (diff) |
chore(db): process "unchanged" files anyway (#9755)v1.28.0-rc.3v1.28.0
Skipping these makes the sequence numbering inconcistent; we've received
a file and suppsedly added it to the database, but if you check the
sequence number afterwards it didn't increase, i.e., we trigger [this
failure
condition](https://github.com/syncthing/syncthing/blob/47f48faed7331b7ba4ad3d6775d5cffacf8931b5/lib/model/indexhandler.go#L447-L459)
and, similarly, a future update will look like there was a hole in the
numbering.
I propose to at least temporarily remove this optimisation in order for
things to make more sense. Is there a reason to keep this beyond saving
some database operations?
-rw-r--r-- | lib/db/lowlevel.go | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/lib/db/lowlevel.go b/lib/db/lowlevel.go index 5684ff5dd1..ee97b35f68 100644 --- a/lib/db/lowlevel.go +++ b/lib/db/lowlevel.go @@ -159,10 +159,6 @@ func (db *Lowlevel) updateRemoteFiles(folder, device []byte, fs []protocol.FileI if err != nil { return err } - if ok && unchanged(f, ef) { - l.Debugf("not inserting unchanged (remote); folder=%q device=%v %v", folder, devID, f) - continue - } if ok { meta.removeFile(devID, ef) @@ -216,12 +212,8 @@ func (db *Lowlevel) updateLocalFiles(folder []byte, fs []protocol.FileInfo, meta if err != nil { return err } - if ok && unchanged(f, ef) { - l.Debugf("not inserting unchanged (local); folder=%q %v", folder, f) - continue - } - blocksHashSame := ok && bytes.Equal(ef.BlocksHash, f.BlocksHash) + blocksHashSame := ok && bytes.Equal(ef.BlocksHash, f.BlocksHash) if ok { keyBuf, err = db.removeLocalBlockAndSequenceInfo(keyBuf, folder, name, ef, !blocksHashSame, &t) if err != nil { @@ -1443,13 +1435,6 @@ func (db *Lowlevel) checkErrorForRepair(err error) { } } -// unchanged checks if two files are the same and thus don't need to be updated. -// Local flags or the invalid bit might change without the version -// being bumped. -func unchanged(nf, ef protocol.FileIntf) bool { - return ef.FileVersion().Equal(nf.FileVersion()) && ef.IsInvalid() == nf.IsInvalid() && ef.FileLocalFlags() == nf.FileLocalFlags() -} - func (db *Lowlevel) handleFailure(err error) { db.checkErrorForRepair(err) if shouldReportFailure(err) { |