From 8454b053196e75d1a7ec78a1892e2c96c77aeb56 Mon Sep 17 00:00:00 2001 From: tnextday Date: Tue, 8 Dec 2015 17:33:58 +0800 Subject: [PATCH] fix ScanDirtyData bug --- go/storage/volume_replicate.go | 4 ++-- .../volume_server_handlers_replicate.go | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/go/storage/volume_replicate.go b/go/storage/volume_replicate.go index 1ea6a8765..4ca21f105 100644 --- a/go/storage/volume_replicate.go +++ b/go/storage/volume_replicate.go @@ -51,7 +51,7 @@ func ScanDirtyData(indexFileContent []byte) (dirtys DirtyDatas) { if int64(nv.Size)-NeedleHeaderSize > 0 { dirtys = append(dirtys, DirtyData{ Offset: int64(nv.Offset)*8 + NeedleHeaderSize, - Size: nv.Size - NeedleHeaderSize, + Size: nv.Size, }) } } @@ -193,7 +193,7 @@ func (v *Volume) GetVolumeCleanReader() (cr *CleanReader, err error) { } else { dirtys = ScanDirtyData(indexData) } - dataFile, e := os.Open(v.FileName()) + dataFile, e := os.Open(v.FileName()+".dat") if e != nil { return nil, e diff --git a/go/weed/weed_server/volume_server_handlers_replicate.go b/go/weed/weed_server/volume_server_handlers_replicate.go index c8b807ffb..c8b429a7b 100644 --- a/go/weed/weed_server/volume_server_handlers_replicate.go +++ b/go/weed/weed_server/volume_server_handlers_replicate.go @@ -10,23 +10,24 @@ import ( ) func (vs *VolumeServer) getVolumeCleanDataHandler(w http.ResponseWriter, r *http.Request) { - v, err := vs.getVolume("volume", r) + v, e := vs.getVolume("volume", r) if v == nil { - http.Error(w, fmt.Sprintf("Not Found volume: %v", err), http.StatusBadRequest) + http.Error(w, fmt.Sprintf("Not Found volume: %v", e), http.StatusBadRequest) return } cr, e := v.GetVolumeCleanReader() if e != nil { - http.Error(w, fmt.Sprintf("Get volume clean reader: %v", err), http.StatusInternalServerError) + http.Error(w, fmt.Sprintf("Get volume clean reader: %v", e), http.StatusInternalServerError) return } totalSize, e := cr.Size() if e != nil { - http.Error(w, fmt.Sprintf("Get volume size: %v", err), http.StatusInternalServerError) + http.Error(w, fmt.Sprintf("Get volume size: %v", e), http.StatusInternalServerError) return } w.Header().Set("Accept-Ranges", "bytes") w.Header().Set("Content-Encoding", "lz4") + w.Header().Set("Content-Disposition", fmt.Sprintf(`filename="%d.dat.lz4"`, v.Id)) lz4w := lz4.NewWriter(w) defer lz4w.Close() rangeReq := r.Header.Get("Range") @@ -37,9 +38,9 @@ func (vs *VolumeServer) getVolumeCleanDataHandler(w http.ResponseWriter, r *http } return } - ranges, err := parseRange(rangeReq, totalSize) - if err != nil { - http.Error(w, err.Error(), http.StatusRequestedRangeNotSatisfiable) + ranges, e := parseRange(rangeReq, totalSize) + if e != nil { + http.Error(w, e.Error(), http.StatusRequestedRangeNotSatisfiable) return } if len(ranges) != 1 { @@ -48,7 +49,7 @@ func (vs *VolumeServer) getVolumeCleanDataHandler(w http.ResponseWriter, r *http } ra := ranges[0] if _, e := cr.Seek(ra.start, 0); e != nil { - http.Error(w, fmt.Sprintf("Seek: %v", err), http.StatusInternalServerError) + http.Error(w, fmt.Sprintf("Seek: %v", e), http.StatusInternalServerError) return } w.Header().Set("Content-Length", strconv.FormatInt(ra.length, 10))