diff --git a/weed/pb/master_pb/master.pb.go b/weed/pb/master_pb/master.pb.go index d23366ade..e96af6abe 100644 --- a/weed/pb/master_pb/master.pb.go +++ b/weed/pb/master_pb/master.pb.go @@ -783,7 +783,8 @@ type VolumeLocation struct { PublicUrl string `protobuf:"bytes,2,opt,name=public_url,json=publicUrl,proto3" json:"public_url,omitempty"` NewVids []uint32 `protobuf:"varint,3,rep,packed,name=new_vids,json=newVids,proto3" json:"new_vids,omitempty"` DeletedVids []uint32 `protobuf:"varint,4,rep,packed,name=deleted_vids,json=deletedVids,proto3" json:"deleted_vids,omitempty"` - Leader string `protobuf:"bytes,5,opt,name=leader,proto3" json:"leader,omitempty"` // optional when leader is not itself + Leader string `protobuf:"bytes,5,opt,name=leader,proto3" json:"leader,omitempty"` // optional when leader is not itself + DataCenter string `protobuf:"bytes,6,opt,name=data_center,proto3" json:"dataCenter,omitempty"` // optional when DataCenter is in use } func (x *VolumeLocation) Reset() { diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index e8fa3995d..0a69a70e1 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -29,8 +29,9 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ glog.V(0).Infof("unregister disconnected volume server %s:%d", dn.Ip, dn.Port) message := &master_pb.VolumeLocation{ - Url: dn.Url(), - PublicUrl: dn.PublicUrl, + Url: dn.Url(), + PublicUrl: dn.PublicUrl, + DataCenter: dn.GetDataCenter().String(), } for _, v := range dn.GetVolumes() { message.DeletedVids = append(message.DeletedVids, uint32(v.Id)) @@ -86,8 +87,9 @@ func (ms *MasterServer) SendHeartbeat(stream master_pb.Seaweed_SendHeartbeatServ glog.V(4).Infof("master received heartbeat %s", heartbeat.String()) message := &master_pb.VolumeLocation{ - Url: dn.Url(), - PublicUrl: dn.PublicUrl, + Url: dn.Url(), + PublicUrl: dn.PublicUrl, + DataCenter: dn.GetDataCenter().String(), } if len(heartbeat.NewVolumes) > 0 || len(heartbeat.DeletedVolumes) > 0 { // process delta volume ids if exists for fast volume id updates diff --git a/weed/topology/topology_map.go b/weed/topology/topology_map.go index 73c55d77d..f25858848 100644 --- a/weed/topology/topology_map.go +++ b/weed/topology/topology_map.go @@ -62,8 +62,9 @@ func (t *Topology) ToVolumeLocations() (volumeLocations []*master_pb.VolumeLocat for _, d := range rack.Children() { dn := d.(*DataNode) volumeLocation := &master_pb.VolumeLocation{ - Url: dn.Url(), - PublicUrl: dn.PublicUrl, + Url: dn.Url(), + PublicUrl: dn.PublicUrl, + DataCenter: dn.GetDataCenter().String(), } for _, v := range dn.GetVolumes() { volumeLocation.NewVids = append(volumeLocation.NewVids, uint32(v.Id)) diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go index df8c186f2..e91e6f28e 100644 --- a/weed/wdclient/masterclient.go +++ b/weed/wdclient/masterclient.go @@ -130,8 +130,9 @@ func (mc *MasterClient) tryConnectToMaster(master string) (nextHintedLeader stri // process new volume location loc := Location{ - Url: volumeLocation.Url, - PublicUrl: volumeLocation.PublicUrl, + Url: volumeLocation.Url, + PublicUrl: volumeLocation.PublicUrl, + DataCenter: volumeLocation.DataCenter, } for _, newVid := range volumeLocation.NewVids { glog.V(1).Infof("%s: %s masterClient adds volume %d", mc.clientType, loc.Url, newVid) diff --git a/weed/wdclient/vid_map.go b/weed/wdclient/vid_map.go index cee2da6e1..b72ac3f55 100644 --- a/weed/wdclient/vid_map.go +++ b/weed/wdclient/vid_map.go @@ -16,8 +16,9 @@ const ( ) type Location struct { - Url string `json:"url,omitempty"` - PublicUrl string `json:"publicUrl,omitempty"` + Url string `json:"url,omitempty"` + PublicUrl string `json:"publicUrl,omitempty"` + DataCenter string `json:"dataCenter,omitempty"` } type vidMap struct {