aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/data_node.go
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2018-07-28 21:03:29 -0700
committerGitHub <noreply@github.com>2018-07-28 21:03:29 -0700
commit452bd0b01393e53e958fb9825bf1f27e6b3522df (patch)
treee1a61e592118f9696b7f51501d3b3fd0f6c3eeb5 /weed/topology/data_node.go
parent97603d6e176dd2b9f2aebd9f6122a8c60481463a (diff)
parentd3205a007071f26587affb416f71b5c63854b863 (diff)
downloadseaweedfs-452bd0b01393e53e958fb9825bf1f27e6b3522df.tar.xz
seaweedfs-452bd0b01393e53e958fb9825bf1f27e6b3522df.zip
Merge pull request #702 from chrislusf/add_topo_listener
Add volume id location change listener
Diffstat (limited to 'weed/topology/data_node.go')
-rw-r--r--weed/topology/data_node.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/weed/topology/data_node.go b/weed/topology/data_node.go
index 0ef8ae14e..6ee9a8a03 100644
--- a/weed/topology/data_node.go
+++ b/weed/topology/data_node.go
@@ -32,7 +32,7 @@ func (dn *DataNode) String() string {
return fmt.Sprintf("Node:%s, volumes:%v, Ip:%s, Port:%d, PublicUrl:%s", dn.NodeImpl.String(), dn.volumes, dn.Ip, dn.Port, dn.PublicUrl)
}
-func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) {
+func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) (isNew bool) {
dn.Lock()
defer dn.Unlock()
if _, ok := dn.volumes[v.Id]; !ok {
@@ -42,12 +42,14 @@ func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) {
dn.UpAdjustActiveVolumeCountDelta(1)
}
dn.UpAdjustMaxVolumeId(v.Id)
+ isNew = true
} else {
dn.volumes[v.Id] = v
}
+ return
}
-func (dn *DataNode) UpdateVolumes(actualVolumes []storage.VolumeInfo) (deletedVolumes []storage.VolumeInfo) {
+func (dn *DataNode) UpdateVolumes(actualVolumes []storage.VolumeInfo) (newVolumes, deletedVolumes []storage.VolumeInfo) {
actualVolumeMap := make(map[storage.VolumeId]storage.VolumeInfo)
for _, v := range actualVolumes {
actualVolumeMap[v.Id] = v
@@ -64,7 +66,10 @@ func (dn *DataNode) UpdateVolumes(actualVolumes []storage.VolumeInfo) (deletedVo
}
dn.Unlock()
for _, v := range actualVolumes {
- dn.AddOrUpdateVolume(v)
+ isNew := dn.AddOrUpdateVolume(v)
+ if isNew {
+ newVolumes = append(newVolumes, v)
+ }
}
return
}