aboutsummaryrefslogtreecommitdiff
path: root/weed/topology
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-08-05 05:35:00 +0500
committerGitHub <noreply@github.com>2022-08-04 17:35:00 -0700
commit4d08393b7ca8b1a34ed65532955de76cf8843ec2 (patch)
treeb764fe5f4b927d9b9cf1b83a2f19c87a91d81c8e /weed/topology
parent28a1f42962a3c22fa341d62e52ed014ae17c508f (diff)
downloadseaweedfs-4d08393b7ca8b1a34ed65532955de76cf8843ec2.tar.xz
seaweedfs-4d08393b7ca8b1a34ed65532955de76cf8843ec2.zip
filer prefer volume server in same data center (#3405)
* initial prefer same data center https://github.com/seaweedfs/seaweedfs/issues/3404 * GetDataCenter * prefer same data center for ReplicationSource * GetDataCenterId * remove glog
Diffstat (limited to 'weed/topology')
-rw-r--r--weed/topology/data_node.go7
-rw-r--r--weed/topology/topology_info.go5
-rw-r--r--weed/topology/volume_growth.go7
3 files changed, 14 insertions, 5 deletions
diff --git a/weed/topology/data_node.go b/weed/topology/data_node.go
index fc003be90..760f14ded 100644
--- a/weed/topology/data_node.go
+++ b/weed/topology/data_node.go
@@ -192,6 +192,13 @@ func (dn *DataNode) GetDataCenter() *DataCenter {
return dcValue.(*DataCenter)
}
+func (dn *DataNode) GetDataCenterId() string {
+ if dc := dn.GetDataCenter(); dc != nil {
+ return string(dc.Id())
+ }
+ return ""
+}
+
func (dn *DataNode) GetRack() *Rack {
return dn.Parent().(*NodeImpl).value.(*Rack)
}
diff --git a/weed/topology/topology_info.go b/weed/topology/topology_info.go
index 595d3555e..680a0528c 100644
--- a/weed/topology/topology_info.go
+++ b/weed/topology/topology_info.go
@@ -76,8 +76,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.GetDataCenterId(),
}
for _, v := range dn.GetVolumes() {
volumeLocation.NewVids = append(volumeLocation.NewVids, uint32(v.Id))
diff --git a/weed/topology/volume_growth.go b/weed/topology/volume_growth.go
index 4b5539d84..0f9ed2812 100644
--- a/weed/topology/volume_growth.go
+++ b/weed/topology/volume_growth.go
@@ -115,9 +115,10 @@ func (vg *VolumeGrowth) findAndGrow(grpcDialOption grpc.DialOption, topo *Topolo
if err = vg.grow(grpcDialOption, topo, vid, option, servers...); err == nil {
for _, server := range servers {
result = append(result, &master_pb.VolumeLocation{
- Url: server.Url(),
- PublicUrl: server.PublicUrl,
- NewVids: []uint32{uint32(vid)},
+ Url: server.Url(),
+ PublicUrl: server.PublicUrl,
+ DataCenter: server.GetDataCenterId(),
+ NewVids: []uint32{uint32(vid)},
})
}
}