aboutsummaryrefslogtreecommitdiff
path: root/weed/server
diff options
context:
space:
mode:
authorjenkins.ow <jenkins@outwardinc.com>2018-09-11 12:38:10 -0700
committerjenkins.ow <jenkins@outwardinc.com>2018-09-11 12:38:10 -0700
commit1690a080b2298ca8427d204994de68fff010e146 (patch)
tree28f811a3a8e6ce68fb882fc7f5859011086ebd46 /weed/server
parentbc025d53055066d20ee6cf02ff4d7a30527831fe (diff)
parent267201ff44d58d339ad2c9006ffe1d6d65e569b3 (diff)
downloadseaweedfs-1690a080b2298ca8427d204994de68fff010e146.tar.xz
seaweedfs-1690a080b2298ca8427d204994de68fff010e146.zip
Merge branch 'master' of https://github.com/hans-strudle/seaweedfs
Diffstat (limited to 'weed/server')
-rw-r--r--weed/server/filer_server_handlers_read.go1
-rw-r--r--weed/server/filer_server_handlers_write.go2
-rw-r--r--weed/server/volume_server_handlers_read.go7
-rw-r--r--weed/server/volume_server_handlers_write.go9
4 files changed, 13 insertions, 6 deletions
diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go
index e17cd776d..eaa8015a6 100644
--- a/weed/server/filer_server_handlers_read.go
+++ b/weed/server/filer_server_handlers_read.go
@@ -119,6 +119,7 @@ func (fs *FilerServer) handleMultipleChunks(w http.ResponseWriter, r *http.Reque
if mimeType != "" {
w.Header().Set("Content-Type", mimeType)
}
+ setEtag(w, filer2.ETag(entry.Chunks))
totalSize := int64(filer2.TotalSize(entry.Chunks))
diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go
index 8a19f3fdb..2f9351fa1 100644
--- a/weed/server/filer_server_handlers_write.go
+++ b/weed/server/filer_server_handlers_write.go
@@ -150,6 +150,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) {
return
}
defer resp.Body.Close()
+ etag := resp.Header.Get("ETag")
resp_body, ra_err := ioutil.ReadAll(resp.Body)
if ra_err != nil {
glog.V(0).Infoln("failing to upload to volume server", r.RequestURI, ra_err.Error())
@@ -202,6 +203,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) {
FileId: fileId,
Size: uint64(ret.Size),
Mtime: time.Now().UnixNano(),
+ ETag: etag,
}},
}
if db_err := fs.filer.CreateEntry(entry); db_err != nil {
diff --git a/weed/server/volume_server_handlers_read.go b/weed/server/volume_server_handlers_read.go
index 64b90b8e7..4da13883e 100644
--- a/weed/server/volume_server_handlers_read.go
+++ b/weed/server/volume_server_handlers_read.go
@@ -68,7 +68,7 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
count, e := vs.store.ReadVolumeNeedle(volumeId, n)
glog.V(4).Infoln("read bytes", count, "error", e)
if e != nil || count < 0 {
- glog.V(0).Infoln("read error:", e, r.URL.Path)
+ glog.V(0).Infof("read %s error: %v", r.URL.Path, e)
w.WriteHeader(http.StatusNotFound)
return
}
@@ -88,12 +88,11 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
}
}
}
- etag := n.Etag()
- if inm := r.Header.Get("If-None-Match"); inm == etag {
+ if inm := r.Header.Get("If-None-Match"); inm == "\""+n.Etag()+"\"" {
w.WriteHeader(http.StatusNotModified)
return
}
- w.Header().Set("Etag", etag)
+ setEtag(w, n.Etag())
if n.HasPairs() {
pairMap := make(map[string]string)
diff --git a/weed/server/volume_server_handlers_write.go b/weed/server/volume_server_handlers_write.go
index d32958339..a0b142dea 100644
--- a/weed/server/volume_server_handlers_write.go
+++ b/weed/server/volume_server_handlers_write.go
@@ -44,8 +44,7 @@ func (vs *VolumeServer) PostHandler(w http.ResponseWriter, r *http.Request) {
ret.Name = string(needle.Name)
}
ret.Size = size
- etag := needle.Etag()
- w.Header().Set("Etag", etag)
+ setEtag(w, needle.Etag())
writeJsonQuiet(w, r, httpStatus, ret)
}
@@ -173,3 +172,9 @@ func (vs *VolumeServer) batchDeleteHandler(w http.ResponseWriter, r *http.Reques
writeJsonQuiet(w, r, http.StatusAccepted, ret)
}
+
+func setEtag(w http.ResponseWriter, etag string) {
+ if etag != "" {
+ w.Header().Set("ETag", "\""+etag+"\"")
+ }
+}