Browse Source

fix: alert engine rebuild hash

main
ning 2 years ago
parent
commit
eba3014c59
2 changed files with 15 additions and 0 deletions
  1. +6
    -0
      alert/naming/hashring.go
  2. +9
    -0
      alert/naming/heartbeat.go

+ 6
- 0
alert/naming/hashring.go View File

@@ -67,6 +67,12 @@ func (chr *DatasourceHashRingType) Set(datasourceId string, r *consistent.Consis
chr.Rings[datasourceId] = r
}

func (chr *DatasourceHashRingType) Del(datasourceId string) {
chr.Lock()
defer chr.Unlock()
delete(chr.Rings, datasourceId)
}

func (chr *DatasourceHashRingType) Clear(engineName string) {
chr.Lock()
defer chr.Unlock()


+ 9
- 0
alert/naming/heartbeat.go View File

@@ -110,7 +110,9 @@ func (n *Naming) heartbeat() error {
}
}

newDatasource := make(map[int64]struct{})
for i := 0; i < len(datasourceIds); i++ {
newDatasource[datasourceIds[i]] = struct{}{}
servers, err := n.ActiveServers(datasourceIds[i])
if err != nil {
logger.Warningf("hearbeat %d get active server err:%v", datasourceIds[i], err)
@@ -130,6 +132,13 @@ func (n *Naming) heartbeat() error {
localss[datasourceIds[i]] = newss
}

for dsId := range localss {
if _, exists := newDatasource[dsId]; !exists {
delete(localss, dsId)
DatasourceHashRing.Del(fmt.Sprintf("%d", dsId))
}
}

// host 告警使用的是 hash ring
err = models.AlertingEngineHeartbeatWithCluster(n.ctx, n.heartbeatConfig.Endpoint, n.heartbeatConfig.EngineName, HostDatasource)
if err != nil {


Loading…
Cancel
Save