Browse Source

lib/db: Properly remove FileInfos when dropping folder (#5260)

Jakob Borg 7 years ago
parent
commit
3bc918ff78
2 changed files with 4 additions and 4 deletions
  1. 2 2
      lib/db/instance.go
  2. 2 2
      lib/db/keyer.go

+ 2 - 2
lib/db/instance.go

@@ -168,7 +168,7 @@ func (db *instance) withAllFolderTruncated(folder []byte, fn func(device []byte,
 	t := db.newReadWriteTransaction()
 	defer t.close()
 
-	dbi := t.NewIterator(util.BytesPrefix(db.keyer.GenerateDeviceFileKey(nil, folder, nil, nil).WithoutName()), nil)
+	dbi := t.NewIterator(util.BytesPrefix(db.keyer.GenerateDeviceFileKey(nil, folder, nil, nil).WithoutNameAndDevice()), nil)
 	defer dbi.Release()
 
 	var gk []byte
@@ -439,7 +439,7 @@ func (db *instance) dropFolder(folder []byte) {
 
 	for _, key := range [][]byte{
 		// Remove all items related to the given folder from the device->file bucket
-		db.keyer.GenerateDeviceFileKey(nil, folder, nil, nil).WithoutName(),
+		db.keyer.GenerateDeviceFileKey(nil, folder, nil, nil).WithoutNameAndDevice(),
 		// Remove all sequences related to the folder
 		db.keyer.GenerateSequenceKey(nil, []byte(folder), 0).WithoutSequence(),
 		// Remove all items related to the given folder from the global bucket

+ 2 - 2
lib/db/keyer.go

@@ -82,8 +82,8 @@ func newDefaultKeyer(folderIdx, deviceIdx *smallIndex) defaultKeyer {
 
 type deviceFileKey []byte
 
-func (k deviceFileKey) WithoutName() []byte {
-	return k[:keyPrefixLen+keyFolderLen+keyDeviceLen]
+func (k deviceFileKey) WithoutNameAndDevice() []byte {
+	return k[:keyPrefixLen+keyFolderLen]
 }
 
 func (k defaultKeyer) GenerateDeviceFileKey(key, folder, device, name []byte) deviceFileKey {