diff options
Diffstat (limited to 'go/topology')
| -rw-r--r-- | go/topology/allocate_volume.go | 2 | ||||
| -rw-r--r-- | go/topology/data_node.go | 7 | ||||
| -rw-r--r-- | go/topology/rack.go | 3 | ||||
| -rw-r--r-- | go/topology/topology.go | 8 | ||||
| -rw-r--r-- | go/topology/topology_vacuum.go | 12 | ||||
| -rw-r--r-- | go/topology/volume_growth.go | 2 |
6 files changed, 23 insertions, 11 deletions
diff --git a/go/topology/allocate_volume.go b/go/topology/allocate_volume.go index a791b4c1c..669177c09 100644 --- a/go/topology/allocate_volume.go +++ b/go/topology/allocate_volume.go @@ -19,7 +19,7 @@ func AllocateVolume(dn *DataNode, vid storage.VolumeId, option *VolumeGrowOption values.Add("collection", option.Collection) values.Add("replication", option.ReplicaPlacement.String()) values.Add("ttl", option.Ttl.String()) - jsonBlob, err := util.Post("http://"+dn.PublicUrl+"/admin/assign_volume", values) + jsonBlob, err := util.Post("http://"+dn.AdminUrl()+"/admin/assign_volume", values) if err != nil { return err } diff --git a/go/topology/data_node.go b/go/topology/data_node.go index 09b9fac6c..2d0a093cc 100644 --- a/go/topology/data_node.go +++ b/go/topology/data_node.go @@ -13,6 +13,7 @@ type DataNode struct { volumes map[storage.VolumeId]storage.VolumeInfo Ip string Port int + AdminPort int PublicUrl string LastSeen int64 // unix time in seconds Dead bool @@ -28,7 +29,7 @@ func NewDataNode(id string) *DataNode { } func (dn *DataNode) String() string { - return fmt.Sprintf("NodeImpl:%s ,volumes:%v, Ip:%s, Port:%d, PublicUrl:%s, Dead:%v", dn.NodeImpl.String(), dn.volumes, dn.Ip, dn.Port, dn.PublicUrl, dn.Dead) + return fmt.Sprintf("Node:%s, volumes:%v, Ip:%s, Port:%d, PublicUrl:%s, Dead:%v", dn.NodeImpl.String(), dn.volumes, dn.Ip, dn.Port, dn.PublicUrl, dn.Dead) } func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) { @@ -89,6 +90,10 @@ func (dn *DataNode) Url() string { return dn.Ip + ":" + strconv.Itoa(dn.Port) } +func (dn *DataNode) AdminUrl() string { + return dn.Ip + ":" + strconv.Itoa(dn.AdminPort) +} + func (dn *DataNode) ToMap() interface{} { ret := make(map[string]interface{}) ret["Url"] = dn.Url() diff --git a/go/topology/rack.go b/go/topology/rack.go index 40e19dd0d..50ad5f009 100644 --- a/go/topology/rack.go +++ b/go/topology/rack.go @@ -27,7 +27,7 @@ func (r *Rack) FindDataNode(ip string, port int) *DataNode { } return nil } -func (r *Rack) GetOrCreateDataNode(ip string, port int, publicUrl string, maxVolumeCount int) *DataNode { +func (r *Rack) GetOrCreateDataNode(ip string, port, adminPort int, publicUrl string, maxVolumeCount int) *DataNode { for _, c := range r.Children() { dn := c.(*DataNode) if dn.MatchLocation(ip, port) { @@ -43,6 +43,7 @@ func (r *Rack) GetOrCreateDataNode(ip string, port int, publicUrl string, maxVol dn := NewDataNode(ip + ":" + strconv.Itoa(port)) dn.Ip = ip dn.Port = port + dn.AdminPort = adminPort dn.PublicUrl = publicUrl dn.maxVolumeCount = maxVolumeCount dn.LastSeen = time.Now().Unix() diff --git a/go/topology/topology.go b/go/topology/topology.go index 4cfd070db..e1f35f7a3 100644 --- a/go/topology/topology.go +++ b/go/topology/topology.go @@ -157,7 +157,13 @@ func (t *Topology) ProcessJoinMessage(joinMessage *operation.JoinMessage) { if *joinMessage.IsInit && dn != nil { t.UnRegisterDataNode(dn) } - dn = rack.GetOrCreateDataNode(*joinMessage.Ip, int(*joinMessage.Port), *joinMessage.PublicUrl, int(*joinMessage.MaxVolumeCount)) + adminPort = *joinMessage.Port + if joinMessage.AdminPort != nil { + adminPort = *joinMessage.AdminPort + } + dn = rack.GetOrCreateDataNode(*joinMessage.Ip, + int(*joinMessage.Port), int(adminPort), *joinMessage.PublicUrl, + int(*joinMessage.MaxVolumeCount)) var volumeInfos []storage.VolumeInfo for _, v := range joinMessage.Volumes { if vi, err := storage.NewVolumeInfo(v); err == nil { diff --git a/go/topology/topology_vacuum.go b/go/topology/topology_vacuum.go index d6fa2213e..0aeb9f132 100644 --- a/go/topology/topology_vacuum.go +++ b/go/topology/topology_vacuum.go @@ -23,7 +23,7 @@ func batchVacuumVolumeCheck(vl *VolumeLayout, vid storage.VolumeId, locationlist //glog.V(0).Infoln(index, "Checked vacuuming", vid, "on", url, "needVacuum", ret) ch <- ret } - }(index, dn.Url(), vid) + }(index, dn.AdminUrl(), vid) } isCheckSuccess := true for _ = range locationlist.list { @@ -50,7 +50,7 @@ func batchVacuumVolumeCompact(vl *VolumeLayout, vid storage.VolumeId, locationli glog.V(0).Infoln(index, "Complete vacuuming", vid, "on", url) ch <- true } - }(index, dn.Url(), vid) + }(index, dn.AdminUrl(), vid) } isVacuumSuccess := true for _ = range locationlist.list { @@ -66,12 +66,12 @@ func batchVacuumVolumeCompact(vl *VolumeLayout, vid storage.VolumeId, locationli func batchVacuumVolumeCommit(vl *VolumeLayout, vid storage.VolumeId, locationlist *VolumeLocationList) bool { isCommitSuccess := true for _, dn := range locationlist.list { - glog.V(0).Infoln("Start Commiting vacuum", vid, "on", dn.Url()) - if e := vacuumVolume_Commit(dn.Url(), vid); e != nil { - glog.V(0).Infoln("Error when committing vacuum", vid, "on", dn.Url(), e) + glog.V(0).Infoln("Start Commiting vacuum", vid, "on", dn.AdminUrl()) + if e := vacuumVolume_Commit(dn.AdminUrl(), vid); e != nil { + glog.V(0).Infoln("Error when committing vacuum", vid, "on", dn.AdminUrl(), e) isCommitSuccess = false } else { - glog.V(0).Infoln("Complete Commiting vacuum", vid, "on", dn.Url()) + glog.V(0).Infoln("Complete Commiting vacuum", vid, "on", dn.AdminUrl()) } if isCommitSuccess { vl.SetVolumeAvailable(dn, vid) diff --git a/go/topology/volume_growth.go b/go/topology/volume_growth.go index 3ad6ad757..9de0eb19f 100644 --- a/go/topology/volume_growth.go +++ b/go/topology/volume_growth.go @@ -201,7 +201,7 @@ func (vg *VolumeGrowth) grow(topo *Topology, vid storage.VolumeId, option *Volum } server.AddOrUpdateVolume(vi) topo.RegisterVolumeLayout(vi, server) - glog.V(0).Infoln("Created Volume", vid, "on", server) + glog.V(0).Infoln("Created Volume", vid, "on", server.NodeImpl.String()) } else { glog.V(0).Infoln("Failed to assign", vid, "to", servers, "error", err) return fmt.Errorf("Failed to assign %d: %v", vid, err) |
