lib/db: Fix accounting bug when dropping indexes (#7774)

This commit is contained in:
Simon Frei
2021-06-17 10:15:11 +02:00
committed by GitHub
parent aa6c55dec1
commit 23a0e18292
4 changed files with 51 additions and 28 deletions
+35
View File
@@ -1784,6 +1784,41 @@ func TestConcurrentIndexID(t *testing.T) {
}
}
func TestNeedRemoveLastValid(t *testing.T) {
db := newLowlevelMemory(t)
defer db.Close()
folder := "test"
testFs := fs.NewFilesystem(fs.FilesystemTypeFake, "")
fs := newFileSet(t, folder, testFs, db)
files := []protocol.FileInfo{
{Name: "foo", Version: protocol.Vector{}.Update(myID), Sequence: 1},
}
fs.Update(remoteDevice0, files)
files[0].Version = files[0].Version.Update(myID)
fs.Update(remoteDevice1, files)
files[0].LocalFlags = protocol.FlagLocalIgnored
fs.Update(protocol.LocalDeviceID, files)
snap := snapshot(t, fs)
c := snap.NeedSize(remoteDevice0)
if c.Files != 1 {
t.Errorf("Expected 1 needed files initially, got %v", c.Files)
}
snap.Release()
fs.Drop(remoteDevice1)
snap = snapshot(t, fs)
c = snap.NeedSize(remoteDevice0)
if c.Files != 0 {
t.Errorf("Expected no needed files, got %v", c.Files)
}
snap.Release()
}
func replace(fs *db.FileSet, device protocol.DeviceID, files []protocol.FileInfo) {
fs.Drop(device)
fs.Update(device, files)