aboutsummaryrefslogtreecommitdiff
path: root/weed/topology
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2022-04-07 10:16:19 -0700
committerGitHub <noreply@github.com>2022-04-07 10:16:19 -0700
commitbbc95dac47278b3daad1038aee22bf011004bf20 (patch)
tree8346221a659a29b7fe1e3ba9de95f19c5638574f /weed/topology
parentaa7703c6dd244a4b4be33fb4a99536576e5039ac (diff)
parentc20e1edd99989971a264517d87765700f1cf94e2 (diff)
downloadseaweedfs-bbc95dac47278b3daad1038aee22bf011004bf20.tar.xz
seaweedfs-bbc95dac47278b3daad1038aee22bf011004bf20.zip
Merge pull request #2885 from binbinshi/master
fix: master lose some volumes
Diffstat (limited to 'weed/topology')
-rw-r--r--weed/topology/topology.go11
-rw-r--r--weed/topology/topology_event_handling.go4
2 files changed, 14 insertions, 1 deletions
diff --git a/weed/topology/topology.go b/weed/topology/topology.go
index 207c89ad7..3efcb3c1c 100644
--- a/weed/topology/topology.go
+++ b/weed/topology/topology.go
@@ -283,3 +283,14 @@ func (t *Topology) IncrementalSyncDataNodeRegistration(newVolumes, deletedVolume
return
}
+
+func (t *Topology) DataNodeRegistration(dcName, rackName string ,dn *DataNode){
+ if dn.Parent() != nil{
+ return
+ }
+ // registration to topo
+ dc := t.GetOrCreateDataCenter(dcName)
+ rack := dc.GetOrCreateRack(rackName)
+ rack.LinkChildNode(dn)
+ glog.Infof("[%s] reLink To topo ", dn.Id())
+} \ No newline at end of file
diff --git a/weed/topology/topology_event_handling.go b/weed/topology/topology_event_handling.go
index 0f1db74df..99acefaf5 100644
--- a/weed/topology/topology_event_handling.go
+++ b/weed/topology/topology_event_handling.go
@@ -1,6 +1,7 @@
package topology
import (
+ "github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
"github.com/chrislusf/seaweedfs/weed/storage/types"
"google.golang.org/grpc"
"math/rand"
@@ -84,7 +85,8 @@ func (t *Topology) UnRegisterDataNode(dn *DataNode) {
negativeUsages := dn.GetDiskUsages().negative()
dn.UpAdjustDiskUsageDelta(negativeUsages)
-
+ dn.DeltaUpdateVolumes([]storage.VolumeInfo{}, dn.GetVolumes())
+ dn.DeltaUpdateEcShards([]*erasure_coding.EcVolumeInfo{}, dn.GetEcShards())
if dn.Parent() != nil {
dn.Parent().UnlinkChildNode(dn.Id())
}