diff options
| author | Chris Lu <chris.lu@gmail.com> | 2013-12-09 13:27:09 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2013-12-09 13:27:09 -0800 |
| commit | 11e91bd5497fe5f97392119d5680a7a1b934c2a7 (patch) | |
| tree | 8969e917344b8c1a4f4a0367c6f14ff6fd60fafb /go/weed/server.go | |
| parent | 2e2f426fe28f8e3d94d7d1dee3afde2655425741 (diff) | |
| download | seaweedfs-11e91bd5497fe5f97392119d5680a7a1b934c2a7.tar.xz seaweedfs-11e91bd5497fe5f97392119d5680a7a1b934c2a7.zip | |
mux router cannot handle "/" correctly. switching it off for volume
servers
Diffstat (limited to 'go/weed/server.go')
| -rw-r--r-- | go/weed/server.go | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/go/weed/server.go b/go/weed/server.go index b242f0592..f4752992b 100644 --- a/go/weed/server.go +++ b/go/weed/server.go @@ -2,6 +2,7 @@ package main import ( "code.google.com/p/weed-fs/go/glog" + "code.google.com/p/weed-fs/go/util" "code.google.com/p/weed-fs/go/weed/weed_server" "github.com/gorilla/mux" "net/http" @@ -40,6 +41,7 @@ var ( serverDataCenter = cmdServer.Flag.String("dataCenter", "", "current volume server's data center name") serverRack = cmdServer.Flag.String("rack", "", "current volume server's rack name") serverWhiteListOption = cmdServer.Flag.String("whiteList", "", "comma separated Ip addresses having write permission. No limit if empty.") + serverMembers = cmdServer.Flag.String("members", "", "comma separated ip:masterPort list") masterPort = cmdServer.Flag.Int("masterPort", 9333, "master server http listen port") masterMetaFolder = cmdServer.Flag.String("mdir", os.TempDir(), "data directory to store meta data") masterVolumeSizeLimitMB = cmdServer.Flag.Uint("volumeSizeLimitMB", 32*1024, "Default Volume Size in MegaBytes") @@ -60,6 +62,10 @@ func runServer(cmd *Command, args []string) bool { } runtime.GOMAXPROCS(*serverMaxCpu) + if err := util.TestFolderWritable(*masterMetaFolder); err != nil { + glog.Fatalf("Check Meta Folder (-mdir) Writable %s : %s", *masterMetaFolder, err) + } + folders := strings.Split(*volumeDataFolders, ",") maxCountStrings := strings.Split(*volumeMaxDataVolumeCounts, ",") maxCounts := make([]int, 0) @@ -74,16 +80,9 @@ func runServer(cmd *Command, args []string) bool { glog.Fatalf("%d directories by -dir, but only %d max is set by -max", len(folders), len(maxCounts)) } for _, folder := range folders { - fileInfo, err := os.Stat(folder) - if err != nil { - glog.Fatalf("No Existing Folder:%s", folder) - } - if !fileInfo.IsDir() { - glog.Fatalf("Volume Folder should not be a file:%s", folder) + if err := util.TestFolderWritable(folder); err != nil { + glog.Fatalf("Check Data Folder(-dir) Writable %s : %s", folder, err) } - perm := fileInfo.Mode().Perm() - glog.V(0).Infoln("Volume Folder", folder) - glog.V(0).Infoln("Permission:", perm) } if *volumePublicUrl == "" { @@ -105,13 +104,24 @@ func runServer(cmd *Command, args []string) bool { Handler: r, ReadTimeout: time.Duration(*serverReadTimeout) * time.Second, } + + go func() { + time.Sleep(100 * time.Millisecond) + var members []string + if *serverMembers != "" { + members = strings.Split(*serverMembers, ",") + } + weed_server.NewRaftServer(r, VERSION, members, *serverIp+":"+strconv.Itoa(*masterPort), *masterMetaFolder) + }() + e := masterServer.ListenAndServe() if e != nil { glog.Fatalf("Fail to start master:%s", e) } }() - r := mux.NewRouter() + time.Sleep(100 * time.Millisecond) + r := http.NewServeMux() weed_server.NewVolumeServer(r, VERSION, *serverIp, *volumePort, *volumePublicUrl, folders, maxCounts, *serverIp+":"+strconv.Itoa(*masterPort), *volumePulse, *serverDataCenter, *serverRack, serverWhiteList, ) |
