Browse Source

fix bug

pull/279/head
tnextday 10 years ago
parent
commit
93c0044fa5
  1. 26
      go/weed/weed_server/volume_server_handlers_read.go
  2. 8
      go/weed/weed_server/volume_server_handlers_sync.go

26
go/weed/weed_server/volume_server_handlers_read.go

@ -15,7 +15,9 @@ import (
"io/ioutil"
"encoding/json"
"errors"
"fmt"
"github.com/chrislusf/seaweedfs/go/glog"
"github.com/chrislusf/seaweedfs/go/images"
"github.com/chrislusf/seaweedfs/go/operation"
@ -300,7 +302,7 @@ func (vs *VolumeServer) readRemoteNeedle(vid string, n *storage.Needle, collecti
u, _ := url.Parse(util.NormalizeUrl(lookupResult.Locations.PickForRead().PublicUrl))
u.Path = "/admin/sync/needle"
args := url.Values{
"vid": {vid},
"volume": {vid},
"nid": {n.Nid()},
}
u.RawQuery = args.Encode()
@ -310,26 +312,38 @@ func (vs *VolumeServer) readRemoteNeedle(vid string, n *storage.Needle, collecti
return 0, err
}
defer resp.Body.Close()
if n.Data, err = ioutil.ReadAll(resp.Body); err != nil {
var buf []byte
if buf, err = ioutil.ReadAll(resp.Body); err != nil {
return 0, err
}
if resp.StatusCode != http.StatusOK {
errMsg := strconv.Itoa(resp.StatusCode)
m := map[string]string{}
if e := json.Unmarshal(buf, &m); e == nil {
if s, ok := m["error"]; ok {
errMsg += ", " + s
}
}
return 0, errors.New(errMsg)
}
n.Data = buf
n.DataSize = uint32(len(n.Data))
if h := resp.Header.Get("SFS-FLAGS"); h != "" {
if h := resp.Header.Get("Seaweed-Flags"); h != "" {
if i, err := strconv.ParseInt(h, 16, 64); err == nil {
n.Flags = byte(i)
}
}
if h := resp.Header.Get("SFS-LastModified"); h != "" {
if h := resp.Header.Get("Seaweed-LastModified"); h != "" {
if i, err := strconv.ParseUint(h, 16, 64); err == nil {
n.LastModified = i
n.SetHasLastModifiedDate()
}
}
if h := resp.Header.Get("SFS-Name"); h != "" {
if h := resp.Header.Get("Seaweed-Name"); h != "" {
n.Name = []byte(h)
n.SetHasName()
}
if h := resp.Header.Get("SFS-Mime"); h != "" {
if h := resp.Header.Get("Seaweed-Mime"); h != "" {
n.Mime = []byte(h)
n.SetHasMime()
}

8
go/weed/weed_server/volume_server_handlers_sync.go

@ -175,15 +175,15 @@ func (vs *VolumeServer) getNeedleHandler(w http.ResponseWriter, r *http.Request)
writeJsonError(w, r, http.StatusNotFound, e)
return
}
w.Header().Set("SFS-FLAGS", strconv.FormatInt(int64(n.Flags), 16))
w.Header().Set("Seaweed-Flags", strconv.FormatInt(int64(n.Flags), 16))
if n.HasLastModifiedDate() {
w.Header().Set("SFS-LastModified", strconv.FormatUint(n.LastModified, 16))
w.Header().Set("Seaweed-LastModified", strconv.FormatUint(n.LastModified, 16))
}
if n.HasName() && n.NameSize > 0 {
w.Header().Set("SFS-Name", string(n.Name))
w.Header().Set("Seaweed-Name", string(n.Name))
}
if n.HasMime() && n.MimeSize > 0 {
w.Header().Set("SFS-Mime", string(n.Mime))
w.Header().Set("Seaweed-Mime", string(n.Mime))
}
w.Write(n.Data)
}
Loading…
Cancel
Save