configurable read timeout

This commit is contained in:
Chris Lu 2012-09-28 10:21:06 -07:00
parent 4c7eb645a1
commit 3a6c37aa6c
2 changed files with 19 additions and 17 deletions

View file

@ -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())
}

View file

@ -33,8 +33,9 @@ var (
ip = cmdVolume.Flag.String("ip", "localhost", "ip or server name")
publicUrl = cmdVolume.Flag.String("publicUrl", "", "Publicly accessible <ip|server_name>:<port>")
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())