aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author霍晓栋 <huoxd@jiedaibao.com>2016-06-29 16:05:00 +0800
committer霍晓栋 <huoxd@jiedaibao.com>2016-06-29 16:05:00 +0800
commit079fdbad131084d2095b3489d2db48708aa6fd25 (patch)
tree57c3f976ec4b0322646aa3aea4eb4655e83e9d80
parentb617b13c4338d031e1a78006f079fc935b0948b0 (diff)
downloadseaweedfs-079fdbad131084d2095b3489d2db48708aa6fd25.tar.xz
seaweedfs-079fdbad131084d2095b3489d2db48708aa6fd25.zip
fix volume_layout bug, add new feature for volume etag write,filer pass through query params'
-rw-r--r--weed/server/filer_server_handlers_read.go7
-rw-r--r--weed/server/volume_server_handlers_write.go2
-rw-r--r--weed/topology/volume_layout.go4
3 files changed, 11 insertions, 2 deletions
diff --git a/weed/server/filer_server_handlers_read.go b/weed/server/filer_server_handlers_read.go
index 7b134581a..8340021ce 100644
--- a/weed/server/filer_server_handlers_read.go
+++ b/weed/server/filer_server_handlers_read.go
@@ -70,6 +70,13 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request,
return
}
u, _ := url.Parse(urlString)
+ q := u.Query()
+ for key, values := range r.URL.Query() {
+ for _, value := range values {
+ q.Add(key, value)
+ }
+ }
+ u.RawQuery = q.Encode()
request := &http.Request{
Method: r.Method,
URL: u,
diff --git a/weed/server/volume_server_handlers_write.go b/weed/server/volume_server_handlers_write.go
index e7ca2f8e1..b02a58fc8 100644
--- a/weed/server/volume_server_handlers_write.go
+++ b/weed/server/volume_server_handlers_write.go
@@ -42,6 +42,8 @@ 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)
writeJsonQuiet(w, r, httpStatus, ret)
}
diff --git a/weed/topology/volume_layout.go b/weed/topology/volume_layout.go
index 1816577b4..066f5f69a 100644
--- a/weed/topology/volume_layout.go
+++ b/weed/topology/volume_layout.go
@@ -79,11 +79,11 @@ func (vl *VolumeLayout) addToWritable(vid storage.VolumeId) {
}
func (vl *VolumeLayout) isOversized(v *storage.VolumeInfo) bool {
- return uint64(v.Size) < vl.volumeSizeLimit
+ return uint64(v.Size) >= vl.volumeSizeLimit
}
func (vl *VolumeLayout) isWritable(v *storage.VolumeInfo) bool {
- return vl.isOversized(v) &&
+ return !vl.isOversized(v) &&
v.Version == storage.CurrentVersion &&
!v.ReadOnly
}