func()

in internal/master/task_master.go [174:232]


func (m *TaskMaster) BatchUpdateTaskStatus(taskMaster taskmaster.TaskMaster, req *schedulerx.ContainerBatchReportTaskStatuesRequest) error {
	for _, status := range req.GetTaskStatues() {
		containerReportTaskStatusReq := &schedulerx.ContainerReportTaskStatusRequest{
			JobId:         proto.Int64(req.GetJobId()),
			JobInstanceId: proto.Int64(req.GetJobInstanceId()),
			TaskId:        proto.Int64(status.GetTaskId()),
			WorkerAddr:    proto.String(req.GetWorkerAddr()),
			WorkerId:      proto.String(req.GetWorkerId()),
			Status:        proto.Int32(status.GetStatus()),
		}

		if result := status.GetResult(); result != "" {
			containerReportTaskStatusReq.Result = proto.String(result)
		}
		if taskName := status.GetTaskName(); taskName != "" {
			containerReportTaskStatusReq.TaskName = proto.String(taskName)
		}
		if progress := status.GetProgress(); progress != "" {
			containerReportTaskStatusReq.Progress = proto.String(progress)
		}
		if serialNum := req.GetSerialNum(); serialNum != 0 {
			containerReportTaskStatusReq.SerialNum = proto.Int64(serialNum)
		}

		switch taskMaster.(type) {
		case *BroadcastTaskMaster:
			if err := taskMaster.(*BroadcastTaskMaster).UpdateTaskStatus(containerReportTaskStatusReq); err != nil {
				if err != nil {
					return fmt.Errorf("BroadcastTaskMaster UpdateTaskStatus failed, err=%s ", err.Error())
				}
			}
		case *BatchTaskMaster:
			if err := taskMaster.(*BatchTaskMaster).UpdateTaskStatus(containerReportTaskStatusReq); err != nil {
				if err != nil {
					return fmt.Errorf("BatchTaskMaster UpdateTaskStatus failed, err=%s ", err.Error())
				}
			}
		case *GridTaskMaster:
			if err := taskMaster.(*GridTaskMaster).UpdateTaskStatus(containerReportTaskStatusReq); err != nil {
				if err != nil {
					return fmt.Errorf("GridTaskMaster UpdateTaskStatus failed, err=%s ", err.Error())
				}
			}
		case *MapTaskMaster:
			if err := taskMaster.(*MapTaskMaster).UpdateTaskStatus(containerReportTaskStatusReq); err != nil {
				if err != nil {
					return fmt.Errorf("MapTaskMaster UpdateTaskStatus failed, err=%s ", err.Error())
				}
			}
		default:
			if err := m.UpdateTaskStatus(containerReportTaskStatusReq); err != nil {
				if err != nil {
					return fmt.Errorf("UpdateTaskStatus failed, err=%s ", err.Error())
				}
			}
		}
	}
	return nil
}