diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-06-22 13:22:22 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-06-22 13:22:22 -0700 |
| commit | 1babec00e70fc194fa40951162db907cf0e363cd (patch) | |
| tree | c195eaa7508d9ec537478c6968f47777068959cd | |
| parent | cd45ab072a8dba68773f995e130798e449b1791a (diff) | |
| download | seaweedfs-1babec00e70fc194fa40951162db907cf0e363cd.tar.xz seaweedfs-1babec00e70fc194fa40951162db907cf0e363cd.zip | |
check deleted chunks faster
| -rw-r--r-- | weed/filer2/filer_deletion.go | 13 | ||||
| -rw-r--r-- | weed/pb/filer_pb/filer_pb_helper.go | 10 |
2 files changed, 5 insertions, 18 deletions
diff --git a/weed/filer2/filer_deletion.go b/weed/filer2/filer_deletion.go index 574be8555..f8b09adf6 100644 --- a/weed/filer2/filer_deletion.go +++ b/weed/filer2/filer_deletion.go @@ -74,16 +74,13 @@ func (f *Filer) deleteChunksIfNotNew(oldEntry, newEntry *Entry) { } var toDelete []*filer_pb.FileChunk + newChunkIds := make(map[string]bool) + for _, newChunk := range newEntry.Chunks { + newChunkIds[newChunk.GetFileIdString()] = true + } for _, oldChunk := range oldEntry.Chunks { - found := false - for _, newChunk := range newEntry.Chunks { - if filer_pb.ChunkEquals(oldChunk, newChunk) { - found = true - break - } - } - if !found { + if _, found := newChunkIds[oldChunk.GetFileIdString()]; !found { toDelete = append(toDelete, oldChunk) } } diff --git a/weed/pb/filer_pb/filer_pb_helper.go b/weed/pb/filer_pb/filer_pb_helper.go index ef216610b..5c40332e6 100644 --- a/weed/pb/filer_pb/filer_pb_helper.go +++ b/weed/pb/filer_pb/filer_pb_helper.go @@ -21,16 +21,6 @@ func (fid *FileId) toFileIdString() string { return needle.NewFileId(needle.VolumeId(fid.VolumeId), fid.FileKey, fid.Cookie).String() } -func ChunkEquals(this, that *FileChunk) bool { - if this.Fid == nil{ - this.Fid, _ = toFileIdObject(this.FileId) - } - if that.Fid == nil{ - that.Fid, _ = toFileIdObject(that.FileId) - } - return this.Fid.FileKey == that.Fid.FileKey && this.Fid.VolumeId == that.Fid.VolumeId && this.Fid.Cookie == that.Fid.Cookie -} - func (c *FileChunk) GetFileIdString() string { if c.FileId != "" { return c.FileId |
