aboutsummaryrefslogtreecommitdiff
path: root/weed/server/filer_server_handlers_write.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-04-08 09:13:26 -0700
committerChris Lu <chris.lu@gmail.com>2020-04-08 09:13:26 -0700
commitdc08e4098ffbb3d7d95c9decac7407e67349baa9 (patch)
tree3bbd20e254a7fc2ce8e372c29a066bc326348831 /weed/server/filer_server_handlers_write.go
parentec2eb8bc4804f9b880f256a55e3cbfc0923b6a29 (diff)
downloadseaweedfs-dc08e4098ffbb3d7d95c9decac7407e67349baa9.tar.xz
seaweedfs-dc08e4098ffbb3d7d95c9decac7407e67349baa9.zip
add etag only for PUT or large chunked uploads
Diffstat (limited to 'weed/server/filer_server_handlers_write.go')
-rw-r--r--weed/server/filer_server_handlers_write.go13
1 files changed, 10 insertions, 3 deletions
diff --git a/weed/server/filer_server_handlers_write.go b/weed/server/filer_server_handlers_write.go
index 33e6ee043..ce184875c 100644
--- a/weed/server/filer_server_handlers_write.go
+++ b/weed/server/filer_server_handlers_write.go
@@ -220,8 +220,13 @@ func (fs *FilerServer) uploadToVolumeServer(r *http.Request, u *url.URL, auth se
defer func() { stats.FilerRequestHistogram.WithLabelValues("postUpload").Observe(time.Since(start).Seconds()) }()
ret = &operation.UploadResult{}
+
md5Hash := md5.New()
- var body = ioutil.NopCloser(io.TeeReader(r.Body, md5Hash))
+ body := r.Body
+ if r.Method == "PUT" {
+ // only PUT or large chunked files has Md5 in attributes
+ body = ioutil.NopCloser(io.TeeReader(r.Body, md5Hash))
+ }
request := &http.Request{
Method: r.Method,
@@ -286,8 +291,10 @@ func (fs *FilerServer) uploadToVolumeServer(r *http.Request, u *url.URL, auth se
}
}
// use filer calculated md5 ETag, instead of the volume server crc ETag
- md5value = md5Hash.Sum(nil)
- ret.ETag = fmt.Sprintf("%x", md5value)
+ if r.Method == "PUT" {
+ md5value = md5Hash.Sum(nil)
+ }
+ ret.ETag = getEtag(resp)
return
}