diff --git a/weed/filer2/filer_deletion.go b/weed/filer2/filer_deletion.go index 06e088de6..574be8555 100644 --- a/weed/filer2/filer_deletion.go +++ b/weed/filer2/filer_deletion.go @@ -78,7 +78,7 @@ func (f *Filer) deleteChunksIfNotNew(oldEntry, newEntry *Entry) { for _, oldChunk := range oldEntry.Chunks { found := false for _, newChunk := range newEntry.Chunks { - if oldChunk.Fid.Equals(newChunk.Fid) { + if filer_pb.ChunkEquals(oldChunk, newChunk) { found = true break } diff --git a/weed/pb/filer_pb/filer_pb_helper.go b/weed/pb/filer_pb/filer_pb_helper.go index be59089dd..361b0f57d 100644 --- a/weed/pb/filer_pb/filer_pb_helper.go +++ b/weed/pb/filer_pb/filer_pb_helper.go @@ -21,8 +21,14 @@ func (fid *FileId) toFileId() string { return needle.NewFileId(needle.VolumeId(fid.VolumeId), fid.FileKey, fid.Cookie).String() } -func (fid *FileId) Equals(that *FileId) bool { - return fid.FileKey == that.FileKey && fid.VolumeId == that.VolumeId && fid.Cookie == that.Cookie +func ChunkEquals(this, that *FileChunk) bool { + if this.Fid == nil{ + this.Fid, _ = toFileId(this.FileId) + } + if that.Fid == nil{ + that.Fid, _ = toFileId(that.FileId) + } + return this.Fid.FileKey == that.Fid.FileKey && this.Fid.VolumeId == that.Fid.VolumeId && this.Fid.Cookie == that.Fid.Cookie } func BeforeEntrySerialization(chunks []*FileChunk) {