fix(sqlite): actually always insert blocks for local files (fixes #10388) (#10411)

Due to a thinko, this optimisation was wildly incorrect and would read
to lack of block reuse when syncing files.

(We do not insert a blocklist per device, but only a single one. We
can't use the fact of whether the insert happened as a criteria for
inserting blocks.)

Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
Jakob Borg
2025-09-23 12:46:31 +00:00
committed by GitHub
parent 932b4ce9bd
commit 6f0acacbd2
2 changed files with 43 additions and 2 deletions
+2 -2
View File
@@ -149,9 +149,9 @@ func (s *folderDB) Update(device protocol.DeviceID, fs []protocol.FileInfo) erro
if err != nil {
return wrap(err, "marshal blocklist")
}
if res, err := insertBlockListStmt.Exec(f.BlocksHash, bs); err != nil {
if _, err := insertBlockListStmt.Exec(f.BlocksHash, bs); err != nil {
return wrap(err, "insert blocklist")
} else if aff, _ := res.RowsAffected(); aff != 0 && device == protocol.LocalDeviceID {
} else if device == protocol.LocalDeviceID {
// Insert all blocks
if err := s.insertBlocksLocked(txp, f.BlocksHash, f.Blocks); err != nil {
return wrap(err, "insert blocks")