aboutsummaryrefslogtreecommitdiff
path: root/weed/command
diff options
context:
space:
mode:
authorChris Lu <chris.lu@uber.com>2019-03-25 23:01:53 -0700
committerChris Lu <chris.lu@uber.com>2019-03-25 23:01:53 -0700
commitdf95ce0b6cc5e4dc91f7dcb0d2fe1ad2bbe47dd7 (patch)
tree49702448c9c5aad61151fd93b1ae1cf10bba4812 /weed/command
parentc913583e2d8de645c5dc36bd048d8e6e51f71ed2 (diff)
downloadseaweedfs-df95ce0b6cc5e4dc91f7dcb0d2fe1ad2bbe47dd7.tar.xz
seaweedfs-df95ce0b6cc5e4dc91f7dcb0d2fe1ad2bbe47dd7.zip
weed backup: efficient delta backup
fix https://github.com/chrislusf/seaweedfs/issues/399
Diffstat (limited to 'weed/command')
-rw-r--r--weed/command/export.go2
-rw-r--r--weed/command/fix.go2
2 files changed, 2 insertions, 2 deletions
diff --git a/weed/command/export.go b/weed/command/export.go
index 5c7e064ce..cdced5936 100644
--- a/weed/command/export.go
+++ b/weed/command/export.go
@@ -107,7 +107,7 @@ func (scanner *VolumeFileScanner4Export) VisitNeedle(n *storage.Needle, offset i
nv, ok := needleMap.Get(n.Id)
glog.V(3).Infof("key %d offset %d size %d disk_size %d gzip %v ok %v nv %+v",
n.Id, offset, n.Size, n.DiskSize(scanner.version), n.IsGzipped(), ok, nv)
- if ok && nv.Size > 0 && int64(nv.Offset)*types.NeedlePaddingSize == offset {
+ if ok && nv.Size > 0 && nv.Size != types.TombstoneFileSize && int64(nv.Offset)*types.NeedlePaddingSize == offset {
if newerThanUnix >= 0 && n.HasLastModifiedDate() && n.LastModified < uint64(newerThanUnix) {
glog.V(3).Infof("Skipping this file, as it's old enough: LastModified %d vs %d",
n.LastModified, newerThanUnix)
diff --git a/weed/command/fix.go b/weed/command/fix.go
index a800978c6..42ae23a3c 100644
--- a/weed/command/fix.go
+++ b/weed/command/fix.go
@@ -44,7 +44,7 @@ func (scanner *VolumeFileScanner4Fix) ReadNeedleBody() bool {
func (scanner *VolumeFileScanner4Fix) VisitNeedle(n *storage.Needle, offset int64) error {
glog.V(2).Infof("key %d offset %d size %d disk_size %d gzip %v", n.Id, offset, n.Size, n.DiskSize(scanner.version), n.IsGzipped())
- if n.Size > 0 {
+ if n.Size > 0 && n.Size != types.TombstoneFileSize {
pe := scanner.nm.Put(n.Id, types.Offset(offset/types.NeedlePaddingSize), n.Size)
glog.V(2).Infof("saved %d with error %v", n.Size, pe)
} else {