From 3a6c37aa6cc8ef77454c34175be75263a9111069 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Fri, 28 Sep 2012 10:21:06 -0700 Subject: [PATCH] configurable read timeout --- weed-fs/src/cmd/weed/master.go | 25 +++++++++++++------------ weed-fs/src/cmd/weed/volume.go | 11 ++++++----- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/weed-fs/src/cmd/weed/master.go b/weed-fs/src/cmd/weed/master.go index b33115080..7751a4819 100644 --- a/weed-fs/src/cmd/weed/master.go +++ b/weed-fs/src/cmd/weed/master.go @@ -34,6 +34,7 @@ var ( mpulse = cmdMaster.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats") confFile = cmdMaster.Flag.String("conf", "/etc/weedfs/weedfs.conf", "xml configuration file") defaultRepType = cmdMaster.Flag.String("defaultReplicationType", "00", "Default replication type if not specified.") + mReadTimeout = cmdMaster.Flag.Int("readTimeout", 5, "connection read timeout in seconds") ) var topo *topology.Topology @@ -51,7 +52,7 @@ func dirLookupHandler(w http.ResponseWriter, r *http.Request) { if machines != nil { ret := []map[string]string{} for _, dn := range *machines { - ret = append(ret, map[string]string{"url": dn.Url(), "publicUrl":dn.PublicUrl}) + ret = append(ret, map[string]string{"url": dn.Url(), "publicUrl": dn.PublicUrl}) } writeJson(w, r, map[string]interface{}{"locations": ret}) } else { @@ -84,17 +85,17 @@ func dirAssignHandler(w http.ResponseWriter, r *http.Request) { } fid, count, dn, err := topo.PickForWrite(rt, c) if err == nil { - writeJson(w, r, map[string]interface{}{"fid": fid, "url": dn.Url(), "publicUrl":dn.PublicUrl, "count": count}) + writeJson(w, r, map[string]interface{}{"fid": fid, "url": dn.Url(), "publicUrl": dn.PublicUrl, "count": count}) } else { writeJson(w, r, map[string]string{"error": err.Error()}) } } func dirJoinHandler(w http.ResponseWriter, r *http.Request) { - ip := r.FormValue("ip") - if ip == ""{ - ip = r.RemoteAddr[0:strings.Index(r.RemoteAddr, ":")] - } + ip := r.FormValue("ip") + if ip == "" { + ip = r.RemoteAddr[0:strings.Index(r.RemoteAddr, ":")] + } port, _ := strconv.Atoi(r.FormValue("port")) maxVolumeCount, _ := strconv.Atoi(r.FormValue("maxVolumeCount")) s := r.RemoteAddr[0:strings.Index(r.RemoteAddr, ":")+1] + r.FormValue("port") @@ -141,12 +142,12 @@ func runMaster(cmd *Command, args []string) bool { topo.StartRefreshWritableVolumes() log.Println("Start Weed Master", VERSION, "at port", strconv.Itoa(*mport)) - srv := &http.Server{ - Addr:":"+strconv.Itoa(*mport), - Handler: http.DefaultServeMux, - ReadTimeout: 5*time.Second, - } - e := srv.ListenAndServe() + srv := &http.Server{ + Addr: ":" + strconv.Itoa(*mport), + Handler: http.DefaultServeMux, + ReadTimeout: time.Duration(*mReadTimeout) * time.Second, + } + e := srv.ListenAndServe() if e != nil { log.Fatalf("Fail to start:%s", e.Error()) } diff --git a/weed-fs/src/cmd/weed/volume.go b/weed-fs/src/cmd/weed/volume.go index 78654e4ef..a9ab85c98 100644 --- a/weed-fs/src/cmd/weed/volume.go +++ b/weed-fs/src/cmd/weed/volume.go @@ -33,8 +33,9 @@ var ( ip = cmdVolume.Flag.String("ip", "localhost", "ip or server name") publicUrl = cmdVolume.Flag.String("publicUrl", "", "Publicly accessible :") masterNode = cmdVolume.Flag.String("mserver", "localhost:9333", "master server location") - vpulse = cmdVolume.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats") + vpulse = cmdVolume.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats, must be smaller than the master's setting") maxVolumeCount = cmdVolume.Flag.Int("max", 5, "maximum number of volumes") + vReadTimeout = cmdVolume.Flag.Int("readTimeout", 5, "connection read timeout in seconds") store *storage.Store ) @@ -274,10 +275,10 @@ func runVolume(cmd *Command, args []string) bool { log.Println("Start Weed volume server", VERSION, "at http://"+*ip+":"+strconv.Itoa(*vport)) srv := &http.Server{ - Addr:":"+strconv.Itoa(*vport), - Handler: http.DefaultServeMux, - ReadTimeout: 5*time.Second, - } + Addr: ":" + strconv.Itoa(*vport), + Handler: http.DefaultServeMux, + ReadTimeout: (time.Duration(*vReadTimeout) * time.Second), + } e := srv.ListenAndServe() if e != nil { log.Fatalf("Fail to start:%s", e.Error())