aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2012-09-25 16:05:31 -0700
committerChris Lu <chris.lu@gmail.com>2012-09-25 16:05:31 -0700
commit59ca65da3c59a27ace610106148ae2ff3f34ff07 (patch)
tree5c3511fedd6d401a622917db85ce97b308c4aba2
parentac5f227aae9f1ce17d0b5b56a87b41c53462fc14 (diff)
downloadseaweedfs-59ca65da3c59a27ace610106148ae2ff3f34ff07.tar.xz
seaweedfs-59ca65da3c59a27ace610106148ae2ff3f34ff07.zip
error handling
-rw-r--r--weed-fs/src/cmd/weed/master.go21
-rw-r--r--weed-fs/src/cmd/weed/volume.go16
2 files changed, 23 insertions, 14 deletions
diff --git a/weed-fs/src/cmd/weed/master.go b/weed-fs/src/cmd/weed/master.go
index 5b69b3d12..9bc7acc3e 100644
--- a/weed-fs/src/cmd/weed/master.go
+++ b/weed-fs/src/cmd/weed/master.go
@@ -45,17 +45,18 @@ func dirLookupHandler(w http.ResponseWriter, r *http.Request) {
if commaSep > 0 {
vid = vid[0:commaSep]
}
- volumeId, _ := storage.NewVolumeId(vid)
- machines := topo.Lookup(volumeId)
- if machines != nil {
- ret := []map[string]string{}
- for _, dn := range *machines {
- ret = append(ret, map[string]string{"url": dn.Ip + strconv.Itoa(dn.Port), "publicUrl": dn.PublicUrl})
+ volumeId, err := storage.NewVolumeId(vid)
+ if err == nil {
+ machines := topo.Lookup(volumeId)
+ if machines != nil {
+ ret := []map[string]string{}
+ for _, dn := range *machines {
+ ret = append(ret, map[string]string{"url": dn.Ip + strconv.Itoa(dn.Port), "publicUrl": dn.PublicUrl})
+ }
+ writeJson(w, r, map[string]interface{}{"locations": ret})
+ } else {
+ writeJson(w, r, map[string]string{"error": "volume id " + volumeId.String() + " not found. "})
}
- writeJson(w, r, map[string]interface{}{"locations": ret})
- } else {
- log.Println("Invalid volume id", volumeId)
- writeJson(w, r, map[string]string{"error": "volume id " + volumeId.String() + " not found. "})
}
}
diff --git a/weed-fs/src/cmd/weed/volume.go b/weed-fs/src/cmd/weed/volume.go
index a6d3e613a..ed3d9a081 100644
--- a/weed-fs/src/cmd/weed/volume.go
+++ b/weed-fs/src/cmd/weed/volume.go
@@ -65,21 +65,29 @@ func storeHandler(w http.ResponseWriter, r *http.Request) {
func GetHandler(w http.ResponseWriter, r *http.Request) {
n := new(storage.Needle)
vid, fid, ext := parseURLPath(r.URL.Path)
- volumeId, _ := storage.NewVolumeId(vid)
+ volumeId, err := storage.NewVolumeId(vid)
+ if err != nil {
+ if *IsDebug {
+ log.Println("parsing error:", err, r.URL.Path)
+ }
+ return
+ }
n.ParsePath(fid)
if *IsDebug {
log.Println("volume", volumeId, "reading", n)
}
if !store.HasVolume(volumeId) {
- lookupResult, err := operation.Lookup(*server, volumeId)
+ lookupResult, err := operation.Lookup(*masterNode, volumeId)
if *IsDebug {
log.Println("volume", volumeId, "found on", lookupResult, "error", err)
}
if err == nil {
http.Redirect(w, r, "http://"+lookupResult.Locations[0].PublicUrl+r.URL.Path, http.StatusMovedPermanently)
} else {
- log.Println("lookup error:", err)
+ if *IsDebug {
+ log.Println("lookup error:", err, r.URL.Path)
+ }
w.WriteHeader(http.StatusNotFound)
}
return
@@ -90,7 +98,7 @@ func GetHandler(w http.ResponseWriter, r *http.Request) {
log.Println("read bytes", count, "error", e)
}
if e != nil || count <= 0 {
- log.Println("read error:", e)
+ log.Println("read error:", e)
w.WriteHeader(http.StatusNotFound)
return
}