diff options
Diffstat (limited to 'go/weed')
| -rw-r--r-- | go/weed/compact.go | 2 | ||||
| -rw-r--r-- | go/weed/download.go | 2 | ||||
| -rw-r--r-- | go/weed/export.go | 4 | ||||
| -rw-r--r-- | go/weed/master.go | 26 | ||||
| -rw-r--r-- | go/weed/server.go | 39 | ||||
| -rw-r--r-- | go/weed/version.go | 2 | ||||
| -rw-r--r-- | go/weed/weed_server/master_server.go | 30 | ||||
| -rw-r--r-- | go/weed/weed_server/master_server_handlers.go | 24 | ||||
| -rw-r--r-- | go/weed/weed_server/volume_server.go | 2 |
9 files changed, 67 insertions, 64 deletions
diff --git a/go/weed/compact.go b/go/weed/compact.go index 2600b3362..580f3f98d 100644 --- a/go/weed/compact.go +++ b/go/weed/compact.go @@ -33,7 +33,7 @@ func runCompact(cmd *Command, args []string) bool { } vid := storage.VolumeId(*compactVolumeId) - v, err := storage.NewVolume(*compactVolumePath, *compactVolumeCollection, vid, storage.CopyNil) + v, err := storage.NewVolume(*compactVolumePath, *compactVolumeCollection, vid, nil) if err != nil { glog.Fatalf("Load Volume [ERROR] %s\n", err) } diff --git a/go/weed/download.go b/go/weed/download.go index 4f332bd2e..2e32f3ae9 100644 --- a/go/weed/download.go +++ b/go/weed/download.go @@ -49,7 +49,7 @@ func runDownload(cmd *Command, args []string) bool { filename = fid } if strings.HasSuffix(filename, "-list") { - filename = filename[0:len(filename)-len("-list")] + filename = filename[0 : len(filename)-len("-list")] fids := strings.Split(string(content), "\n") f, err := os.OpenFile(path.Join(*downloadDir, filename), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm) if err != nil { diff --git a/go/weed/export.go b/go/weed/export.go index 2ab197652..02452950d 100644 --- a/go/weed/export.go +++ b/go/weed/export.go @@ -82,8 +82,8 @@ func runExport(cmd *Command, args []string) bool { } fileName := strconv.Itoa(*exportVolumeId) - if *exportCollection!=""{ - fileName = *exportCollection + "_" + fileName + if *exportCollection != "" { + fileName = *exportCollection + "_" + fileName } vid := storage.VolumeId(*exportVolumeId) indexFile, err := os.OpenFile(path.Join(*exportVolumePath, fileName+".idx"), os.O_RDONLY, 0644) diff --git a/go/weed/master.go b/go/weed/master.go index 97def1948..0d2866c68 100644 --- a/go/weed/master.go +++ b/go/weed/master.go @@ -27,18 +27,18 @@ var cmdMaster = &Command{ } var ( - mport = cmdMaster.Flag.Int("port", 9333, "http listen port") - masterIp = cmdMaster.Flag.String("ip", "", "master ip address") - 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", 32*1000, "Default Volume Size in MegaBytes") - 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", "000", "Default replication type if not specified.") - mReadTimeout = cmdMaster.Flag.Int("readTimeout", 3, "connection read timeout in seconds") - mMaxCpu = cmdMaster.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs") - garbageThreshold = cmdMaster.Flag.String("garbageThreshold", "0.3", "threshold to vacuum and reclaim spaces") - masterWhiteListOption = cmdMaster.Flag.String("whiteList", "", "comma separated Ip addresses having write permission. No limit if empty.") + mport = cmdMaster.Flag.Int("port", 9333, "http listen port") + masterIp = cmdMaster.Flag.String("ip", "", "master ip address") + 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", 32*1000, "Default Volume Size in MegaBytes") + mpulse = cmdMaster.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats") + confFile = cmdMaster.Flag.String("conf", "/etc/weedfs/weedfs.conf", "xml configuration file") + defaultReplicaPlacement = cmdMaster.Flag.String("defaultReplication", "000", "Default replication type if not specified.") + mReadTimeout = cmdMaster.Flag.Int("readTimeout", 3, "connection read timeout in seconds") + mMaxCpu = cmdMaster.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs") + garbageThreshold = cmdMaster.Flag.String("garbageThreshold", "0.3", "threshold to vacuum and reclaim spaces") + masterWhiteListOption = cmdMaster.Flag.String("whiteList", "", "comma separated Ip addresses having write permission. No limit if empty.") masterWhiteList []string ) @@ -57,7 +57,7 @@ func runMaster(cmd *Command, args []string) bool { r := mux.NewRouter() ms := weed_server.NewMasterServer(r, VERSION, *mport, *metaFolder, - *volumeSizeLimitMB, *mpulse, *confFile, *defaultRepType, *garbageThreshold, masterWhiteList, + *volumeSizeLimitMB, *mpulse, *confFile, *defaultReplicaPlacement, *garbageThreshold, masterWhiteList, ) glog.V(0).Infoln("Start Weed Master", VERSION, "at port", *masterIp+":"+strconv.Itoa(*mport)) diff --git a/go/weed/server.go b/go/weed/server.go index b1f5dc049..4cd800142 100644 --- a/go/weed/server.go +++ b/go/weed/server.go @@ -35,23 +35,23 @@ var cmdServer = &Command{ } var ( - serverIp = cmdServer.Flag.String("ip", "localhost", "ip or server name") - serverMaxCpu = cmdServer.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs") - serverReadTimeout = cmdServer.Flag.Int("readTimeout", 3, "connection read timeout in seconds. Increase this if uploading large files.") - 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.") - serverPeers = cmdServer.Flag.String("peers", "", "other master nodes in 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*1000, "Default Volume Size in MegaBytes") - masterConfFile = cmdServer.Flag.String("conf", "/etc/weedfs/weedfs.conf", "xml configuration file") - masterDefaultRepType = cmdServer.Flag.String("defaultReplicationType", "000", "Default replication type if not specified.") - volumePort = cmdServer.Flag.Int("port", 8080, "volume server http listen port") - volumePublicUrl = cmdServer.Flag.String("publicUrl", "", "Publicly accessible <ip|server_name>:<port>") - volumeDataFolders = cmdServer.Flag.String("dir", os.TempDir(), "directories to store data files. dir[,dir]...") - volumeMaxDataVolumeCounts = cmdServer.Flag.String("max", "7", "maximum numbers of volumes, count[,count]...") - volumePulse = cmdServer.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats, must be smaller than the master's setting") + serverIp = cmdServer.Flag.String("ip", "localhost", "ip or server name") + serverMaxCpu = cmdServer.Flag.Int("maxCpu", 0, "maximum number of CPUs. 0 means all available CPUs") + serverReadTimeout = cmdServer.Flag.Int("readTimeout", 3, "connection read timeout in seconds. Increase this if uploading large files.") + 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.") + serverPeers = cmdServer.Flag.String("peers", "", "other master nodes in comma separated ip:masterPort list") + masterPort = cmdServer.Flag.Int("masterPort", 9333, "master server http listen port") + masterMetaFolder = cmdServer.Flag.String("mdir", "", "data directory to store meta data, default to same as -dir specified") + masterVolumeSizeLimitMB = cmdServer.Flag.Uint("volumeSizeLimitMB", 32*1000, "Default Volume Size in MegaBytes") + masterConfFile = cmdServer.Flag.String("conf", "/etc/weedfs/weedfs.conf", "xml configuration file") + masterDefaultReplicaPlacement = cmdServer.Flag.String("defaultReplicaPlacement", "000", "Default replication type if not specified.") + volumePort = cmdServer.Flag.Int("port", 8080, "volume server http listen port") + volumePublicUrl = cmdServer.Flag.String("publicUrl", "", "Publicly accessible <ip|server_name>:<port>") + volumeDataFolders = cmdServer.Flag.String("dir", os.TempDir(), "directories to store data files. dir[,dir]...") + volumeMaxDataVolumeCounts = cmdServer.Flag.String("max", "7", "maximum numbers of volumes, count[,count]...") + volumePulse = cmdServer.Flag.Int("pulseSeconds", 5, "number of seconds between heartbeats, must be smaller than the master's setting") serverWhiteList []string ) @@ -62,6 +62,9 @@ func runServer(cmd *Command, args []string) bool { } runtime.GOMAXPROCS(*serverMaxCpu) + if *masterMetaFolder == "" { + *masterMetaFolder = *volumeDataFolders + } if err := util.TestFolderWritable(*masterMetaFolder); err != nil { glog.Fatalf("Check Meta Folder (-mdir) Writable %s : %s", *masterMetaFolder, err) } @@ -95,7 +98,7 @@ func runServer(cmd *Command, args []string) bool { go func() { r := mux.NewRouter() ms := weed_server.NewMasterServer(r, VERSION, *masterPort, *masterMetaFolder, - *masterVolumeSizeLimitMB, *volumePulse, *masterConfFile, *masterDefaultRepType, *garbageThreshold, serverWhiteList, + *masterVolumeSizeLimitMB, *volumePulse, *masterConfFile, *masterDefaultReplicaPlacement, *garbageThreshold, serverWhiteList, ) glog.V(0).Infoln("Start Weed Master", VERSION, "at port", *serverIp+":"+strconv.Itoa(*masterPort)) diff --git a/go/weed/version.go b/go/weed/version.go index 561057778..9b6ca63e1 100644 --- a/go/weed/version.go +++ b/go/weed/version.go @@ -6,7 +6,7 @@ import ( ) const ( - VERSION = "0.46" + VERSION = "0.47" ) var cmdVersion = &Command{ diff --git a/go/weed/weed_server/master_server.go b/go/weed/weed_server/master_server.go index 738484ff0..c8a9bbbed 100644 --- a/go/weed/weed_server/master_server.go +++ b/go/weed/weed_server/master_server.go @@ -15,14 +15,14 @@ import ( ) type MasterServer struct { - port int - metaFolder string - volumeSizeLimitMB uint - pulseSeconds int - defaultRepType string - garbageThreshold string - whiteList []string - version string + port int + metaFolder string + volumeSizeLimitMB uint + pulseSeconds int + defaultReplicaPlacement string + garbageThreshold string + whiteList []string + version string topo *topology.Topology vg *replication.VolumeGrowth @@ -35,17 +35,17 @@ func NewMasterServer(r *mux.Router, version string, port int, metaFolder string, volumeSizeLimitMB uint, pulseSeconds int, confFile string, - defaultRepType string, + defaultReplicaPlacement string, garbageThreshold string, whiteList []string, ) *MasterServer { ms := &MasterServer{ - version: version, - volumeSizeLimitMB: volumeSizeLimitMB, - pulseSeconds: pulseSeconds, - defaultRepType: defaultRepType, - garbageThreshold: garbageThreshold, - whiteList: whiteList, + version: version, + volumeSizeLimitMB: volumeSizeLimitMB, + pulseSeconds: pulseSeconds, + defaultReplicaPlacement: defaultReplicaPlacement, + garbageThreshold: garbageThreshold, + whiteList: whiteList, } seq := sequence.NewFileSequencer(path.Join(metaFolder, "weed.seq")) var e error diff --git a/go/weed/weed_server/master_server_handlers.go b/go/weed/weed_server/master_server_handlers.go index 99e8fd1ef..f53d2b8ed 100644 --- a/go/weed/weed_server/master_server_handlers.go +++ b/go/weed/weed_server/master_server_handlers.go @@ -40,20 +40,20 @@ func (ms *MasterServer) dirAssignHandler(w http.ResponseWriter, r *http.Request) if e != nil { c = 1 } - repType := r.FormValue("replication") - if repType == "" { - repType = ms.defaultRepType + replication := r.FormValue("replication") + if replication == "" { + replication = ms.defaultReplicaPlacement } collection := r.FormValue("collection") dataCenter := r.FormValue("dataCenter") - rt, err := storage.NewReplicationTypeFromString(repType) + replicaPlacement, err := storage.NewReplicaPlacementFromString(replication) if err != nil { w.WriteHeader(http.StatusNotAcceptable) writeJsonQuiet(w, r, map[string]string{"error": err.Error()}) return } - if ms.topo.GetVolumeLayout(collection, rt).GetActiveVolumeCount(dataCenter) <= 0 { + if ms.topo.GetVolumeLayout(collection, replicaPlacement).GetActiveVolumeCount(dataCenter) <= 0 { if ms.topo.FreeSpace() <= 0 { w.WriteHeader(http.StatusNotFound) writeJsonQuiet(w, r, map[string]string{"error": "No free volumes left!"}) @@ -61,15 +61,15 @@ func (ms *MasterServer) dirAssignHandler(w http.ResponseWriter, r *http.Request) } else { ms.vgLock.Lock() defer ms.vgLock.Unlock() - if ms.topo.GetVolumeLayout(collection, rt).GetActiveVolumeCount(dataCenter) <= 0 { - if _, err = ms.vg.AutomaticGrowByType(collection, rt, dataCenter, ms.topo); err != nil { + if ms.topo.GetVolumeLayout(collection, replicaPlacement).GetActiveVolumeCount(dataCenter) <= 0 { + if _, err = ms.vg.AutomaticGrowByType(collection, replicaPlacement, dataCenter, ms.topo); err != nil { writeJsonQuiet(w, r, map[string]string{"error": "Cannot grow volume group! " + err.Error()}) return } } } } - fid, count, dn, err := ms.topo.PickForWrite(collection, rt, c, dataCenter) + fid, count, dn, err := ms.topo.PickForWrite(collection, replicaPlacement, c, dataCenter) if err == nil { writeJsonQuiet(w, r, map[string]interface{}{"fid": fid, "url": dn.Url(), "publicUrl": dn.PublicUrl, "count": count}) } else { @@ -119,13 +119,13 @@ func (ms *MasterServer) volumeVacuumHandler(w http.ResponseWriter, r *http.Reque func (ms *MasterServer) volumeGrowHandler(w http.ResponseWriter, r *http.Request) { count := 0 - rt, err := storage.NewReplicationTypeFromString(r.FormValue("replication")) + replicaPlacement, err := storage.NewReplicaPlacementFromString(r.FormValue("replication")) if err == nil { if count, err = strconv.Atoi(r.FormValue("count")); err == nil { - if ms.topo.FreeSpace() < count*rt.GetCopyCount() { - err = errors.New("Only " + strconv.Itoa(ms.topo.FreeSpace()) + " volumes left! Not enough for " + strconv.Itoa(count*rt.GetCopyCount())) + if ms.topo.FreeSpace() < count*replicaPlacement.GetCopyCount() { + err = errors.New("Only " + strconv.Itoa(ms.topo.FreeSpace()) + " volumes left! Not enough for " + strconv.Itoa(count*replicaPlacement.GetCopyCount())) } else { - count, err = ms.vg.GrowByCountAndType(count, r.FormValue("collection"), rt, r.FormValue("dataCneter"), ms.topo) + count, err = ms.vg.GrowByCountAndType(count, r.FormValue("collection"), replicaPlacement, r.FormValue("dataCneter"), ms.topo) } } else { err = errors.New("parameter count is not found") diff --git a/go/weed/weed_server/volume_server.go b/go/weed/weed_server/volume_server.go index f42585da2..a2939f848 100644 --- a/go/weed/weed_server/volume_server.go +++ b/go/weed/weed_server/volume_server.go @@ -61,7 +61,7 @@ func NewVolumeServer(r *http.ServeMux, version string, ip string, port int, publ if connected { time.Sleep(time.Duration(float32(vs.pulseSeconds*1e3)*(1+rand.Float32())) * time.Millisecond) } else { - time.Sleep(time.Duration(float32(vs.pulseSeconds*1e3)* 0.25) * time.Millisecond) + time.Sleep(time.Duration(float32(vs.pulseSeconds*1e3)*0.25) * time.Millisecond) } } }() |
