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

This commit is contained in:
Jakob Borg 2018-10-11 12:09:44 +02:00 committed by Simon Frei
parent 3e50edf46f
commit 3bc918ff78
2 changed files with 4 additions and 4 deletions

View File

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

View File

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