Browse Source

fix schedulecreatetask issue

pull/407/head
tzwang 9 months ago
parent
commit
fc160e48ea
7 changed files with 42 additions and 13 deletions
  1. +23
    -5
      internal/logic/schedule/schedulecreatetasklogic.go
  2. +1
    -1
      internal/logic/schedule/schedulesubmitlogic.go
  3. +13
    -2
      internal/scheduler/database/aiStorage.go
  4. +2
    -2
      internal/scheduler/scheduler.go
  5. +1
    -1
      internal/scheduler/schedulers/aiScheduler.go
  6. +1
    -1
      internal/scheduler/service/inference/imageInference/imageInference.go
  7. +1
    -1
      internal/scheduler/service/inference/textInference/textInference.go

+ 23
- 5
internal/logic/schedule/schedulecreatetasklogic.go View File

@@ -10,7 +10,7 @@ import (
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/storeLink"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
"gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
"gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants"
"gopkg.in/yaml.v3"
"slices"
"strings"
@@ -49,6 +49,11 @@ func (l *ScheduleCreateTaskLogic) ScheduleCreateTask(req *types.CreateTaskReq) (
return nil, err
}

taskName, err := l.handleDuplicateTaskName(req.Name)
if err != nil {
return nil, err
}

var clusters []string
if len(req.JobResources.Clusters) == 1 {
clusters = append(clusters, req.JobResources.Clusters[0].ClusterID)
@@ -61,7 +66,7 @@ func (l *ScheduleCreateTaskLogic) ScheduleCreateTask(req *types.CreateTaskReq) (
ClusterId: req.JobResources.Clusters[0].ClusterID,
}}, req.JobResources.Clusters)

taskId, err := l.createTask("SCHEDULE_TASK_"+utils.RandomString(TRAINNING_TASK_SUFFIX_LEN), req.JobResources.ScheduleStrategy, assignedClusters, req.Token)
taskId, err := l.createTask(taskName, req.Description, req.JobResources.ScheduleStrategy, assignedClusters, req.Token)
if err != nil {
return nil, err
}
@@ -87,7 +92,7 @@ func (l *ScheduleCreateTaskLogic) ScheduleCreateTask(req *types.CreateTaskReq) (
if err != nil {
return nil, err
}
taskId, err := l.createTask("SCHEDULE_TASK_"+utils.RandomString(TRAINNING_TASK_SUFFIX_LEN), req.JobResources.ScheduleStrategy, assignedClusters, req.Token)
taskId, err := l.createTask(taskName, req.Description, req.JobResources.ScheduleStrategy, assignedClusters, req.Token)
if err != nil {
return nil, err
}
@@ -120,6 +125,19 @@ func validateJobResources(resources types.JobResources) error {
return nil
}

func (l *ScheduleCreateTaskLogic) handleDuplicateTaskName(name string) (string, error) {
exist, err := l.svcCtx.Scheduler.AiStorages.DoesTaskNameExist(name)
if err != nil {
return "", err
}

if exist {
return name + "_" + time.Now().Format(constants.Layout_Time_Suffix), nil
}

return name, nil
}

func (l *ScheduleCreateTaskLogic) getAssignedClustersByStrategy(resources *types.JobResources, dataDistribute *types.DataDistribute) ([]*strategy.AssignedCluster, error) {
var assignedClusters []*strategy.AssignedCluster
switch resources.ScheduleStrategy {
@@ -210,7 +228,7 @@ func copyParams(clusters []*strategy.AssignedCluster, clusterInfos []*types.JobC
return result
}

func (l *ScheduleCreateTaskLogic) createTask(taskName string, strategyName string, clusters []*strategy.AssignedCluster, token string) (int64, error) {
func (l *ScheduleCreateTaskLogic) createTask(taskName string, desc string, strategyName string, clusters []*strategy.AssignedCluster, token string) (int64, error) {
var synergyStatus int64
if len(clusters) > 1 {
synergyStatus = 1
@@ -221,7 +239,7 @@ func (l *ScheduleCreateTaskLogic) createTask(taskName string, strategyName strin
fmt.Printf("Error while Marshaling. %v", err)
}

taskId, err := l.svcCtx.Scheduler.CreateTask(taskName, synergyStatus, strategyName, string(y), token, &l.svcCtx.Config)
taskId, err := l.svcCtx.Scheduler.CreateTask(taskName, desc, synergyStatus, strategyName, string(y), token, &l.svcCtx.Config)
if err != nil {
return 0, err
}


+ 1
- 1
internal/logic/schedule/schedulesubmitlogic.go View File

@@ -65,7 +65,7 @@ func (l *ScheduleSubmitLogic) ScheduleSubmit(req *types.ScheduleReq) (resp *type
synergystatus = 1
}

taskId, err := l.svcCtx.Scheduler.CreateTask(req.AiOption.TaskName, synergystatus, req.AiOption.Strategy, "", req.Token, &l.svcCtx.Config)
taskId, err := l.svcCtx.Scheduler.CreateTask(req.AiOption.TaskName, "", synergystatus, req.AiOption.Strategy, "", req.Token, &l.svcCtx.Config)
if err != nil {
return nil, err
}


+ 13
- 2
internal/scheduler/database/aiStorage.go View File

@@ -103,12 +103,23 @@ func (s *AiStorage) GetAiTaskListById(id int64) ([]*models.TaskAi, error) {
return aiTaskList, nil
}

func (s *AiStorage) SaveTask(name string, strategyCode int64, synergyStatus int64, aiType string, yaml string, saveToChain func(task models.Task, id int64) error) (int64, error) {
func (s *AiStorage) DoesTaskNameExist(name string) (bool, error) {
var total int32
tx := s.DbEngin.Raw("select count(*) from task where `name` = ?", name).Scan(&total)
if tx.Error != nil {
logx.Errorf(tx.Error.Error())
return false, tx.Error
}
return total > 0, nil
}

func (s *AiStorage) SaveTask(name string, desc string, strategyCode int64, synergyStatus int64, aiType string, yaml string, saveToChain func(task models.Task, id int64) error) (int64, error) {
startTime := time.Now()

// 构建主任务结构体
taskModel := models.Task{
Status: constants.Saved,
Description: "ai task",
Description: desc,
Name: name,
SynergyStatus: synergyStatus,
Strategy: strategyCode,


+ 2
- 2
internal/scheduler/scheduler.go View File

@@ -188,13 +188,13 @@ func (s *Scheduler) SaveToDb() error {
return nil
}

func (s *Scheduler) CreateTask(taskName string, synergyCode int64, strategyName string, yaml string, token string, config *config.Config) (int64, error) {
func (s *Scheduler) CreateTask(taskName string, desc string, synergyCode int64, strategyName string, yaml string, token string, config *config.Config) (int64, error) {
strategyCode, err := s.AiStorages.GetStrategyCode(strategyName)
if err != nil {
return 0, err
}

id, err := s.AiStorages.SaveTask(taskName, strategyCode, synergyCode, "10", yaml, blockchain.SaveToChain(token, config))
id, err := s.AiStorages.SaveTask(taskName, desc, strategyCode, synergyCode, "10", yaml, blockchain.SaveToChain(token, config))
if err != nil {
return 0, err
}


+ 1
- 1
internal/scheduler/schedulers/aiScheduler.go View File

@@ -229,7 +229,7 @@ func (as *AiScheduler) AssignTask(clusters []*strategy.AssignedCluster, mode int
synergystatus = 1
}

taskId, err := as.CreateTask(as.option.TaskName, synergystatus, as.option.StrategyName, "", "", nil)
taskId, err := as.CreateTask(as.option.TaskName, "", synergystatus, as.option.StrategyName, "", "", nil)
if err != nil {
return nil, err
}


+ 1
- 1
internal/scheduler/service/inference/imageInference/imageInference.go View File

@@ -126,7 +126,7 @@ func (i *ImageInference) saveTask() (int64, error) {
return 0, err
}

id, err := i.storage.SaveTask(i.opt.TaskName, strategyCode, synergystatus, i.inference.GetAiType(), "", nil)
id, err := i.storage.SaveTask(i.opt.TaskName, "", strategyCode, synergystatus, i.inference.GetAiType(), "", nil)
if err != nil {
return 0, err
}


+ 1
- 1
internal/scheduler/service/inference/textInference/textInference.go View File

@@ -70,7 +70,7 @@ func (ti *TextInference) saveTask() (int64, error) {
var synergystatus int64
var strategyCode int64

id, err := ti.storage.SaveTask(ti.opt.TaskName, strategyCode, synergystatus, ti.inference.GetAiType(), "", nil)
id, err := ti.storage.SaveTask(ti.opt.TaskName, "", strategyCode, synergystatus, ti.inference.GetAiType(), "", nil)
if err != nil {
return 0, err
}


Loading…
Cancel
Save