From 77cab2b57031a5c6ab43822635307541ab243d08 Mon Sep 17 00:00:00 2001 From: yanyiwu Date: Tue, 3 Feb 2015 00:28:28 +0800 Subject: [PATCH 1/6] usecase: Data Migration Example --- docs/usecases.rst | 61 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/docs/usecases.rst b/docs/usecases.rst index 8a9a6d44a..ed70f0015 100644 --- a/docs/usecases.rst +++ b/docs/usecases.rst @@ -52,4 +52,63 @@ However, if blocking servicing port is not feasible or trivial, a white list opt weed master -whiteList="::1,127.0.0.1" weed volume -whiteList="::1,127.0.0.1" - # "::1" is for IP v6 localhost. \ No newline at end of file + # "::1" is for IP v6 localhost. + + +Data Migration Example +############################# + +.. code-block:: bash + + weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 + weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 + weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 + weed volume -dir=/tmp/vol3/ -mserver="localhost:9334" -ip="localhost" -port=8083 + +.. code-block:: bash + + ls vol1 vol2 vol3 + vol1: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 5.dat 5.idx + vol2: + 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 6.dat 6.idx + vol3: + 1.dat 1.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + +stop all of them + +move vol3/* to vol1 and vol2 + +it is ok to move x.dat and x.idx from one volumeserver to another volumeserver, +because they are exactly the same. +it can be checked by md5. + +.. code-block:: bash + + md5 vol1/1.dat vol2/1.dat + MD5 (vol1/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 + MD5 (vol2/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 + md5 vol1/1.idx vol2/1.idx + MD5 (vol1/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 + MD5 (vol2/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 + +.. code-block:: bash + + ls vol1 vol2 vol3 + vol1: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + vol2: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + vol3: + +start + +.. code-block:: bash + + weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 + weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 + weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 + +so we finished moving data of localhost:8083 to localhost:8081/localhost:8082 + + From 74ff6bc3ed292c29847ddfc061e2e83625cda1ab Mon Sep 17 00:00:00 2001 From: yanyiwu Date: Tue, 3 Feb 2015 00:31:39 +0800 Subject: [PATCH 2/6] usecase: Data Migration Example --- docs/usecases.rst | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/usecases.rst b/docs/usecases.rst index ed70f0015..ac0a2d0b3 100644 --- a/docs/usecases.rst +++ b/docs/usecases.rst @@ -60,20 +60,20 @@ Data Migration Example .. code-block:: bash - weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 - weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 - weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 - weed volume -dir=/tmp/vol3/ -mserver="localhost:9334" -ip="localhost" -port=8083 + weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 + weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 + weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 + weed volume -dir=/tmp/vol3/ -mserver="localhost:9334" -ip="localhost" -port=8083 .. code-block:: bash - ls vol1 vol2 vol3 - vol1: - 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 5.dat 5.idx - vol2: - 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 6.dat 6.idx - vol3: - 1.dat 1.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + ls vol1 vol2 vol3 + vol1: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 5.dat 5.idx + vol2: + 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 6.dat 6.idx + vol3: + 1.dat 1.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx stop all of them @@ -85,29 +85,29 @@ it can be checked by md5. .. code-block:: bash - md5 vol1/1.dat vol2/1.dat - MD5 (vol1/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 - MD5 (vol2/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 - md5 vol1/1.idx vol2/1.idx - MD5 (vol1/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 - MD5 (vol2/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 + md5 vol1/1.dat vol2/1.dat + MD5 (vol1/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 + MD5 (vol2/1.dat) = c1a49a0ee550b44fef9f8ae9e55215c7 + md5 vol1/1.idx vol2/1.idx + MD5 (vol1/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 + MD5 (vol2/1.idx) = b9edc95795dfb3b0f9063c9cc9ba8095 .. code-block:: bash - ls vol1 vol2 vol3 - vol1: - 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx - vol2: - 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx - vol3: + ls vol1 vol2 vol3 + vol1: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + vol2: + 1.dat 1.idx 2.dat 2.idx 3.dat 3.idx 4.dat 4.idx 5.dat 5.idx 6.dat 6.idx + vol3: start .. code-block:: bash - weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 - weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 - weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 + weed master -mdir="/tmp/mdata" -defaultReplication="001" -ip="localhost" -port=9334 + weed volume -dir=/tmp/vol1/ -mserver="localhost:9334" -ip="localhost" -port=8081 + weed volume -dir=/tmp/vol2/ -mserver="localhost:9334" -ip="localhost" -port=8082 so we finished moving data of localhost:8083 to localhost:8081/localhost:8082 From cc724305b665bb13a592334cf4739c4498df9d72 Mon Sep 17 00:00:00 2001 From: chrislusf Date: Mon, 2 Feb 2015 10:16:50 -0800 Subject: [PATCH 3/6] Using Url instead of PublicUrl for volume server Originally there are only url(ip + port), and publicUrl. Because ip was used to listen for http service, it has less flexibility and volume server has to be accessed via publicUrl. Recently we added ip.bind, for binding http service. With this change, url can be used to connect to volume servers. And publicUrl becomes a free style piece of url information, it does not even need to be unique. --- go/operation/delete_content.go | 8 ++++---- go/operation/lookup.go | 2 +- go/operation/submit.go | 2 +- go/weed/benchmark.go | 4 ++-- go/weed/weed_server/common.go | 2 +- go/weed/weed_server/filer_server_handlers.go | 4 ++-- go/weed/weed_server/master_server_handlers_admin.go | 2 +- go/weed/weed_server/volume_server_handlers.go | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/go/operation/delete_content.go b/go/operation/delete_content.go index 416a852b3..064cc8df9 100644 --- a/go/operation/delete_content.go +++ b/go/operation/delete_content.go @@ -66,11 +66,11 @@ func DeleteFiles(master string, fileIds []string) (*DeleteFilesResult, error) { continue } for _, location := range result.Locations { - if _, ok := server_to_fileIds[location.PublicUrl]; !ok { - server_to_fileIds[location.PublicUrl] = make([]string, 0) + if _, ok := server_to_fileIds[location.Url]; !ok { + server_to_fileIds[location.Url] = make([]string, 0) } - server_to_fileIds[location.PublicUrl] = append( - server_to_fileIds[location.PublicUrl], vid_to_fileIds[vid]...) + server_to_fileIds[location.Url] = append( + server_to_fileIds[location.Url], vid_to_fileIds[vid]...) } } diff --git a/go/operation/lookup.go b/go/operation/lookup.go index c05eb1d2b..8156c9779 100644 --- a/go/operation/lookup.go +++ b/go/operation/lookup.go @@ -72,7 +72,7 @@ func LookupFileId(server string, fileId string) (fullUrl string, err error) { if len(lookup.Locations) == 0 { return "", errors.New("File Not Found") } - return "http://" + lookup.Locations[rand.Intn(len(lookup.Locations))].PublicUrl + "/" + fileId, nil + return "http://" + lookup.Locations[rand.Intn(len(lookup.Locations))].Url + "/" + fileId, nil } // LookupVolumeIds find volume locations by cache and actual lookup diff --git a/go/operation/submit.go b/go/operation/submit.go index 62db46617..3ab6d78d9 100644 --- a/go/operation/submit.go +++ b/go/operation/submit.go @@ -137,7 +137,7 @@ func upload_one_chunk(filename string, reader io.Reader, master, replication str if err != nil { return "", 0, err } - fileUrl, fid := "http://"+ret.PublicUrl+"/"+ret.Fid, ret.Fid + fileUrl, fid := "http://"+ret.Url+"/"+ret.Fid, ret.Fid glog.V(4).Info("Uploading part ", filename, " to ", fileUrl, "...") uploadResult, uploadError := Upload(fileUrl, filename, reader, false, "application/octet-stream") if uploadError != nil { diff --git a/go/weed/benchmark.go b/go/weed/benchmark.go index f4f0b1874..04ab4307d 100644 --- a/go/weed/benchmark.go +++ b/go/weed/benchmark.go @@ -203,7 +203,7 @@ func writeFiles(idChan chan int, fileIdLineChan chan string, s *stat) { fileSize := int64(*b.fileSize + rand.Intn(64)) fp := &operation.FilePart{Reader: &FakeReader{id: uint64(id), size: fileSize}, FileSize: fileSize} if assignResult, err := operation.Assign(*b.server, 1, "", *b.collection, ""); err == nil { - fp.Server, fp.Fid, fp.Collection = assignResult.PublicUrl, assignResult.Fid, *b.collection + fp.Server, fp.Fid, fp.Collection = assignResult.Url, assignResult.Fid, *b.collection if _, err := fp.Upload(0, *b.server); err == nil { if rand.Intn(100) < *b.deletePercentage { s.total++ @@ -251,7 +251,7 @@ func readFiles(fileIdLineChan chan string, s *stat) { if _, now_ok := b.vid2server[vid]; !now_ok { if ret, err := operation.Lookup(*b.server, vid); err == nil { if len(ret.Locations) > 0 { - server = ret.Locations[0].PublicUrl + server = ret.Locations[0].Url b.vid2server[vid] = server } } diff --git a/go/weed/weed_server/common.go b/go/weed/weed_server/common.go index d259aa660..a2d93c246 100644 --- a/go/weed/weed_server/common.go +++ b/go/weed/weed_server/common.go @@ -96,7 +96,7 @@ func submitForClientHandler(w http.ResponseWriter, r *http.Request, masterUrl st return } - url := "http://" + assignResult.PublicUrl + "/" + assignResult.Fid + url := "http://" + assignResult.Url + "/" + assignResult.Fid if lastModified != 0 { url = url + "?ts=" + strconv.FormatUint(lastModified, 10) } diff --git a/go/weed/weed_server/filer_server_handlers.go b/go/weed/weed_server/filer_server_handlers.go index 0811b7973..ac894771a 100644 --- a/go/weed/weed_server/filer_server_handlers.go +++ b/go/weed/weed_server/filer_server_handlers.go @@ -80,7 +80,7 @@ func (fs *FilerServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request, w.WriteHeader(http.StatusNotFound) return } - urlLocation := lookup.Locations[rand.Intn(len(lookup.Locations))].PublicUrl + urlLocation := lookup.Locations[rand.Intn(len(lookup.Locations))].Url urlString := "http://" + urlLocation + "/" + fileId if fs.redirectOnRead { http.Redirect(w, r, urlString, http.StatusFound) @@ -126,7 +126,7 @@ func (fs *FilerServer) PostHandler(w http.ResponseWriter, r *http.Request) { return } - u, _ := url.Parse("http://" + assignResult.PublicUrl + "/" + assignResult.Fid) + u, _ := url.Parse("http://" + assignResult.Url + "/" + assignResult.Fid) glog.V(4).Infoln("post to", u) request := &http.Request{ Method: r.Method, diff --git a/go/weed/weed_server/master_server_handlers_admin.go b/go/weed/weed_server/master_server_handlers_admin.go index 4d304efcb..33e45afd2 100644 --- a/go/weed/weed_server/master_server_handlers_admin.go +++ b/go/weed/weed_server/master_server_handlers_admin.go @@ -119,7 +119,7 @@ func (ms *MasterServer) redirectHandler(w http.ResponseWriter, r *http.Request) } machines := ms.Topo.Lookup("", volumeId) if machines != nil && len(machines) > 0 { - http.Redirect(w, r, "http://"+machines[0].PublicUrl+r.URL.Path, http.StatusMovedPermanently) + http.Redirect(w, r, "http://"+machines[0].Url()+r.URL.Path, http.StatusMovedPermanently) } else { writeJsonError(w, r, http.StatusNotFound, fmt.Errorf("volume id %d not found.", volumeId)) } diff --git a/go/weed/weed_server/volume_server_handlers.go b/go/weed/weed_server/volume_server_handlers.go index 6b47ee84d..c2c9e8523 100644 --- a/go/weed/weed_server/volume_server_handlers.go +++ b/go/weed/weed_server/volume_server_handlers.go @@ -61,7 +61,7 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request) lookupResult, err := operation.Lookup(vs.masterNode, volumeId.String()) glog.V(2).Infoln("volume", volumeId, "found on", lookupResult, "error", err) if err == nil && len(lookupResult.Locations) > 0 { - http.Redirect(w, r, "http://"+lookupResult.Locations[0].PublicUrl+r.URL.Path, http.StatusMovedPermanently) + http.Redirect(w, r, "http://"+lookupResult.Locations[0].Url+r.URL.Path, http.StatusMovedPermanently) } else { glog.V(2).Infoln("lookup error:", err, r.URL.Path) w.WriteHeader(http.StatusNotFound) From e381356af975132d57b51e1923722b5413c9111e Mon Sep 17 00:00:00 2001 From: chrislusf Date: Mon, 2 Feb 2015 15:51:25 -0800 Subject: [PATCH 4/6] change CLI option from publicIp to publicUrl Now the publicUrl is free style text. --- go/weed/master.go | 13 ++++--------- go/weed/server.go | 16 ++++++---------- go/weed/volume.go | 16 +++++----------- go/weed/weed_server/volume_server.go | 4 +--- 4 files changed, 16 insertions(+), 33 deletions(-) diff --git a/go/weed/master.go b/go/weed/master.go index 13f6d7c43..af63d8c22 100644 --- a/go/weed/master.go +++ b/go/weed/master.go @@ -31,7 +31,6 @@ var ( mport = cmdMaster.Flag.Int("port", 9333, "http listen port") masterIp = cmdMaster.Flag.String("ip", "", "master listening ip address, default to listen on all network interfaces") masterBindIp = cmdMaster.Flag.String("ip.bind", "0.0.0.0", "ip address to bind to") - mPublicIp = cmdMaster.Flag.String("publicIp", "", "peer accessible |") metaFolder = cmdMaster.Flag.String("mdir", os.TempDir(), "data directory to store meta data") masterPeers = cmdMaster.Flag.String("peers", "", "other master nodes in comma separated ip:port list") volumeSizeLimitMB = cmdMaster.Flag.Uint("volumeSizeLimitMB", 30*1000, "Master stops directing writes to oversized volumes.") @@ -76,19 +75,15 @@ func runMaster(cmd *Command, args []string) bool { go func() { time.Sleep(100 * time.Millisecond) - if *mPublicIp == "" { - if *masterIp == "" { - *mPublicIp = "localhost" - } else { - *mPublicIp = *masterIp - } + if *masterIp == "" { + *masterIp = "localhost" } - myPublicMasterAddress := *mPublicIp + ":" + strconv.Itoa(*mport) + myMasterAddress := *masterIp + ":" + strconv.Itoa(*mport) var peers []string if *masterPeers != "" { peers = strings.Split(*masterPeers, ",") } - raftServer := weed_server.NewRaftServer(r, peers, myPublicMasterAddress, *metaFolder, ms.Topo, *mpulse) + raftServer := weed_server.NewRaftServer(r, peers, myMasterAddress, *metaFolder, ms.Topo, *mpulse) ms.SetRaftServer(raftServer) }() diff --git a/go/weed/server.go b/go/weed/server.go index 16b809c53..f7cbab55b 100644 --- a/go/weed/server.go +++ b/go/weed/server.go @@ -48,7 +48,7 @@ var cmdServer = &Command{ var ( serverIp = cmdServer.Flag.String("ip", "", "ip or server name") - serverPublicIp = cmdServer.Flag.String("publicIp", "", "ip or server name") + serverPublicUrl = cmdServer.Flag.String("publicUrl", "", "publicly accessible address") serverBindIp = cmdServer.Flag.String("ip.bind", "0.0.0.0", "ip address to bind to") serverMaxCpu = cmdServer.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs") serverTimeout = cmdServer.Flag.Int("idleTimeout", 10, "connection idle seconds") @@ -99,19 +99,15 @@ func runServer(cmd *Command, args []string) bool { defer pprof.StopCPUProfile() } - if *serverPublicIp == "" { - if *serverIp == "" { - *serverPublicIp = "localhost" - } else { - *serverPublicIp = *serverIp - } + if *serverIp == "" { + *serverIp = "localhost" } if *filerOptions.redirectOnRead { *isStartingFiler = true } - *filerOptions.master = *serverPublicIp + ":" + strconv.Itoa(*masterPort) + *filerOptions.master = *serverIp + ":" + strconv.Itoa(*masterPort) if *filerOptions.defaultReplicaPlacement == "" { *filerOptions.defaultReplicaPlacement = *masterDefaultReplicaPlacement @@ -207,7 +203,7 @@ func runServer(cmd *Command, args []string) bool { go func() { raftWaitForMaster.Wait() time.Sleep(100 * time.Millisecond) - myAddress := *serverPublicIp + ":" + strconv.Itoa(*masterPort) + myAddress := *serverIp + ":" + strconv.Itoa(*masterPort) var peers []string if *serverPeers != "" { peers = strings.Split(*serverPeers, ",") @@ -227,7 +223,7 @@ func runServer(cmd *Command, args []string) bool { time.Sleep(100 * time.Millisecond) r := http.NewServeMux() volumeServer := weed_server.NewVolumeServer(r, r, - *serverIp, *volumePort, *volumeAdminPort, *serverPublicIp, + *serverIp, *volumePort, *volumeAdminPort, *serverPublicUrl, folders, maxCounts, *serverIp+":"+strconv.Itoa(*masterPort), *volumePulse, *serverDataCenter, *serverRack, serverWhiteList, *volumeFixJpgOrientation, diff --git a/go/weed/volume.go b/go/weed/volume.go index df1d603ac..df3974c8c 100644 --- a/go/weed/volume.go +++ b/go/weed/volume.go @@ -23,7 +23,7 @@ type VolumeServerOptions struct { folders []string folderMaxLimits []int ip *string - publicIp *string + publicUrl *string bindIp *string master *string pulseSeconds *int @@ -40,7 +40,7 @@ func init() { v.port = cmdVolume.Flag.Int("port", 8080, "http listen port") v.adminPort = cmdVolume.Flag.Int("port.admin", 0, "admin port to talk with master and other volume servers") v.ip = cmdVolume.Flag.String("ip", "", "ip or server name") - v.publicIp = cmdVolume.Flag.String("publicIp", "", "Publicly accessible ") + v.publicUrl = cmdVolume.Flag.String("publicUrl", "", "Publicly accessible address") v.bindIp = cmdVolume.Flag.String("ip.bind", "0.0.0.0", "ip address to bind to") v.master = cmdVolume.Flag.String("mserver", "localhost:9333", "master server location") v.pulseSeconds = cmdVolume.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats, must be smaller than or equal to the master's setting") @@ -95,14 +95,8 @@ func runVolume(cmd *Command, args []string) bool { v.whiteList = strings.Split(*volumeWhiteListOption, ",") } - //derive default public ip address - if *v.publicIp == "" { - if *v.ip == "" { - *v.ip = "127.0.0.1" - *v.publicIp = "localhost" - } else { - *v.publicIp = *v.ip - } + if *v.ip == "" { + *v.ip = "127.0.0.1" } if *v.adminPort == 0 { @@ -117,7 +111,7 @@ func runVolume(cmd *Command, args []string) bool { } volumeServer := weed_server.NewVolumeServer(publicMux, adminMux, - *v.ip, *v.port, *v.adminPort, *v.publicIp, + *v.ip, *v.port, *v.adminPort, *v.publicUrl, v.folders, v.folderMaxLimits, *v.master, *v.pulseSeconds, *v.dataCenter, *v.rack, v.whiteList, diff --git a/go/weed/weed_server/volume_server.go b/go/weed/weed_server/volume_server.go index 8846c4794..f3ad2974d 100644 --- a/go/weed/weed_server/volume_server.go +++ b/go/weed/weed_server/volume_server.go @@ -3,7 +3,6 @@ package weed_server import ( "math/rand" "net/http" - "strconv" "time" "github.com/chrislusf/weed-fs/go/glog" @@ -23,13 +22,12 @@ type VolumeServer struct { } func NewVolumeServer(publicMux, adminMux *http.ServeMux, ip string, - port, adminPort int, publicIp string, + port, adminPort int, publicUrl string, folders []string, maxCounts []int, masterNode string, pulseSeconds int, dataCenter string, rack string, whiteList []string, fixJpgOrientation bool) *VolumeServer { - publicUrl := publicIp + ":" + strconv.Itoa(port) vs := &VolumeServer{ masterNode: masterNode, pulseSeconds: pulseSeconds, From 1791de4ae48708dde5104cd2c12c9c321461431f Mon Sep 17 00:00:00 2001 From: chrislusf Date: Mon, 2 Feb 2015 16:26:12 -0800 Subject: [PATCH 5/6] Avoid creating filer folder if not starting it. --- go/weed/server.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/go/weed/server.go b/go/weed/server.go index f7cbab55b..b779033cb 100644 --- a/go/weed/server.go +++ b/go/weed/server.go @@ -140,9 +140,11 @@ func runServer(cmd *Command, args []string) bool { if *masterMetaFolder == "" { *masterMetaFolder = folders[0] } - if *filerOptions.dir == "" { - *filerOptions.dir = *masterMetaFolder + "/filer" - os.MkdirAll(*filerOptions.dir, 0700) + if *isStartingFiler { + if *filerOptions.dir == "" { + *filerOptions.dir = *masterMetaFolder + "/filer" + os.MkdirAll(*filerOptions.dir, 0700) + } } if err := util.TestFolderWritable(*masterMetaFolder); err != nil { glog.Fatalf("Check Meta Folder (-mdir=\"%s\") Writable: %s", *masterMetaFolder, err) From b13bcdaedac8af6b433ce39172ffdc33e6ef85f9 Mon Sep 17 00:00:00 2001 From: chrislusf Date: Mon, 2 Feb 2015 17:27:29 -0800 Subject: [PATCH 6/6] Fix travis build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 79cec6d8a..1a2ae20ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: go go: - 1.3 - - release + - 1.4.1 - tip before_install: