aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-06-22 13:22:22 -0700
committerChris Lu <chris.lu@gmail.com>2019-06-22 13:22:22 -0700
commit1babec00e70fc194fa40951162db907cf0e363cd (patch)
treec195eaa7508d9ec537478c6968f47777068959cd
parentcd45ab072a8dba68773f995e130798e449b1791a (diff)
downloadseaweedfs-1babec00e70fc194fa40951162db907cf0e363cd.tar.xz
seaweedfs-1babec00e70fc194fa40951162db907cf0e363cd.zip
check deleted chunks faster
-rw-r--r--weed/filer2/filer_deletion.go13
-rw-r--r--weed/pb/filer_pb/filer_pb_helper.go10
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