|
@ -128,7 +128,7 @@ func GetHandler(w http.ResponseWriter, r *http.Request) { |
|
|
w.Write(n.Data) |
|
|
w.Write(n.Data) |
|
|
} |
|
|
} |
|
|
func PostHandler(w http.ResponseWriter, r *http.Request) { |
|
|
func PostHandler(w http.ResponseWriter, r *http.Request) { |
|
|
r.ParseForm() |
|
|
|
|
|
|
|
|
r.ParseForm() |
|
|
vid, _, _ := parseURLPath(r.URL.Path) |
|
|
vid, _, _ := parseURLPath(r.URL.Path) |
|
|
volumeId, e := storage.NewVolumeId(vid) |
|
|
volumeId, e := storage.NewVolumeId(vid) |
|
|
if e != nil { |
|
|
if e != nil { |
|
@ -139,11 +139,9 @@ func PostHandler(w http.ResponseWriter, r *http.Request) { |
|
|
writeJson(w, r, ne) |
|
|
writeJson(w, r, ne) |
|
|
} else { |
|
|
} else { |
|
|
ret := store.Write(volumeId, needle) |
|
|
ret := store.Write(volumeId, needle) |
|
|
if ret > 0 || !store.HasVolume(volumeId){ //send to other replica locations
|
|
|
|
|
|
|
|
|
if ret > 0 || !store.HasVolume(volumeId) { //send to other replica locations
|
|
|
if r.FormValue("type") != "standard" { |
|
|
if r.FormValue("type") != "standard" { |
|
|
waitTime, err := strconv.Atoi(r.FormValue("wait")) |
|
|
|
|
|
lookupResult, lookupErr := operation.Lookup(*server, volumeId) |
|
|
|
|
|
if lookupErr == nil { |
|
|
|
|
|
|
|
|
if lookupResult, lookupErr := operation.Lookup(*server, volumeId); lookupErr == nil { |
|
|
sendFunc := func(background bool) { |
|
|
sendFunc := func(background bool) { |
|
|
postContentFunc := func(location operation.Location) bool { |
|
|
postContentFunc := func(location operation.Location) bool { |
|
|
operation.Upload("http://"+location.PublicUrl+r.URL.Path+"?type=standard", filename, bytes.NewReader(needle.Data)) |
|
|
operation.Upload("http://"+location.PublicUrl+r.URL.Path+"?type=standard", filename, bytes.NewReader(needle.Data)) |
|
@ -159,6 +157,7 @@ func PostHandler(w http.ResponseWriter, r *http.Request) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
waitTime, err := strconv.Atoi(r.FormValue("wait")) |
|
|
sendFunc(err == nil && waitTime > 0) |
|
|
sendFunc(err == nil && waitTime > 0) |
|
|
} else { |
|
|
} else { |
|
|
log.Println("Failed to lookup for", volumeId, lookupErr.Error()) |
|
|
log.Println("Failed to lookup for", volumeId, lookupErr.Error()) |
|
|