fix: 网元重启事件触发跟踪任务重发任务id对不上

This commit is contained in:
TsMask
2025-05-16 14:13:37 +08:00
parent 93890c4931
commit b34df2630a
3 changed files with 9 additions and 7 deletions

View File

@@ -485,7 +485,7 @@ func alarmEventNew(neInfo neModel.NeInfo, v Alarm) (neDataModel.AlarmEvent, erro
}
// 网元重启后,有跟踪任务的需要重新补发启动任务
if v.AlarmCode == constants.ALARM_EVENT_REBOOT {
traceService.NewTraceTask.RunUnstopped()
traceService.NewTraceTask.RunUnstopped(neInfo.NeType, neInfo.NeId)
}
return alarmEvent, nil
}

View File

@@ -116,11 +116,11 @@ func (r TraceTask) SelectByIds(ids []int64) []model.TraceTask {
}
// SelectByUnstopped 查询未停止的任务补发
func (r TraceTask) SelectByUnstopped() []model.TraceTask {
func (r TraceTask) SelectByUnstopped(neStr string) []model.TraceTask {
rows := []model.TraceTask{}
tx := db.DB("").Model(&model.TraceTask{})
// 构建查询条件
tx = tx.Where("end_time > ?", time.Now().UnixMilli())
tx = tx.Where("end_time > ? and ne_list like ?", time.Now().UnixMilli(), fmt.Sprintf("%%%s%%", neStr))
// 查询数据
if err := tx.Find(&rows).Error; err != nil {
logger.Errorf("query find err => %v", err.Error())

View File

@@ -202,8 +202,9 @@ func (r TraceTask) createTaskToNe(task *model.TraceTask, ignoreErr bool) error {
return fmt.Errorf("ne list is empty")
}
// 生成任务ID
traceId := r.traceTaskRepository.LastID() + 1 // 生成任务ID < 65535
task.TraceId = fmt.Sprint(traceId)
if task.TraceId == "" {
task.TraceId = fmt.Sprint(r.traceTaskRepository.LastID() + 1) // 生成任务ID < 65535
}
// 发送任务给网元
errNe := []string{}
@@ -331,8 +332,9 @@ func (r TraceTask) DeleteByIds(ids []int64) (int64, error) {
}
// RunUnstopped 启动跟踪未停止的任务
func (r TraceTask) RunUnstopped() {
tasks := r.traceTaskRepository.SelectByUnstopped()
func (r TraceTask) RunUnstopped(neType string, neId string) {
neStr := fmt.Sprintf("%s_%s", neType, neId)
tasks := r.traceTaskRepository.SelectByUnstopped(neStr)
for _, task := range tasks {
r.createTaskToNe(&task, true)
}