aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/needle_map
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-01-08 09:45:03 -0800
committerChris Lu <chris.lu@gmail.com>2020-01-08 09:45:03 -0800
commitacf7ca7b93e0a33e9fc987dec600d1b9f1dc1e32 (patch)
tree7f55e4c8baa41098df36e676c048d3c4588959cb /weed/storage/needle_map
parent943f4986ef27fda2487eff0669ecf79faaaacda1 (diff)
downloadseaweedfs-acf7ca7b93e0a33e9fc987dec600d1b9f1dc1e32.tar.xz
seaweedfs-acf7ca7b93e0a33e9fc987dec600d1b9f1dc1e32.zip
volume: fix compaction
Diffstat (limited to 'weed/storage/needle_map')
-rw-r--r--weed/storage/needle_map/memdb.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/weed/storage/needle_map/memdb.go b/weed/storage/needle_map/memdb.go
index 6aba6adeb..9eb4d9f56 100644
--- a/weed/storage/needle_map/memdb.go
+++ b/weed/storage/needle_map/memdb.go
@@ -89,6 +89,9 @@ func (cm *MemDb) SaveToIdx(idxName string) (ret error) {
defer idxFile.Close()
return cm.AscendingVisit(func(value NeedleValue) error {
+ if value.Offset.IsZero() || value.Size == TombstoneFileSize {
+ return nil
+ }
_, err := idxFile.Write(value.ToBytes())
return err
})
@@ -104,7 +107,7 @@ func (cm *MemDb) LoadFromIdx(idxName string) (ret error) {
return idx.WalkIndexFile(idxFile, func(key NeedleId, offset Offset, size uint32) error {
if offset.IsZero() || size == TombstoneFileSize {
- return nil
+ return cm.Delete(key)
}
return cm.Set(key, offset, size)
})