From a6475ad5c65ae54be92a4f32b503748a06a04d02 Mon Sep 17 00:00:00 2001 From: liuzx Date: Mon, 22 Aug 2022 18:14:48 +0800 Subject: [PATCH 1/4] Delete cloud brain task when deleting project --- models/repo.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/models/repo.go b/models/repo.go index 5e11df2b6..d104acce5 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1788,7 +1788,8 @@ func DeleteRepository(doer *User, uid, repoID int64) error { // Delete dataset attachment record and remove related files deleteDatasetAttachmentByRepoId(sess, repoID) - + // Delete cloudbrain task record + deleteCloudbrainByRepoId(sess, repoID) if err = deleteBeans(sess, &Access{RepoID: repo.ID}, &Action{RepoID: repo.ID}, @@ -1988,6 +1989,26 @@ func deleteDatasetAttachmentByRepoId(sess *xorm.Session, repoId int64) error { return err } +func deleteCloudbrainByRepoId(sess *xorm.Session, repoId int64) error { + cloudbrains := make([]*Cloudbrain, 0) + if err := sess. + Where("repo_id = ?", repoId). + Find(&cloudbrains); err != nil { + return err + } + if len(cloudbrains) == 0 { + return nil + } + for _, cloudbrain := range cloudbrains { + err := DeleteJob(cloudbrain) + if err != nil { + return err + } + } + return nil + +} + // GetRepositoryByOwnerAndName returns the repository by given ownername and reponame. func GetRepositoryByOwnerAndName(ownerName, repoName string) (*Repository, error) { return getRepositoryByOwnerAndName(x, ownerName, repoName) From 840ff473622e82a420e40165181601d1fab8563f Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Tue, 23 Aug 2022 17:08:14 +0800 Subject: [PATCH 2/4] fix issue --- templates/repo/modelarts/notebook/show.tmpl | 2 +- templates/repo/modelarts/trainjob/version_new.tmpl | 1 + web_src/js/features/cloudbrainShow.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index b74e22775..65cfb68d9 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -441,7 +441,7 @@ {{.DatasetName}} {{.DatasetDownloadLink}} - 复制链接 + 复制链接 {{end}} diff --git a/templates/repo/modelarts/trainjob/version_new.tmpl b/templates/repo/modelarts/trainjob/version_new.tmpl index e5d4d954a..b9d24ba7a 100644 --- a/templates/repo/modelarts/trainjob/version_new.tmpl +++ b/templates/repo/modelarts/trainjob/version_new.tmpl @@ -160,6 +160,7 @@
+
{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}} diff --git a/web_src/js/features/cloudbrainShow.js b/web_src/js/features/cloudbrainShow.js index 9c68722a7..73a8ed7b6 100644 --- a/web_src/js/features/cloudbrainShow.js +++ b/web_src/js/features/cloudbrainShow.js @@ -419,7 +419,7 @@ export default async function initCloudrainSow() { html += ""; html += ""; html += ""; - html += ""; + html += ""; if (data.Dirs[i].IsDir) { html += ""; } else { From d6b3b37abe309c92b33b3cb816b2f260770fbad3 Mon Sep 17 00:00:00 2001 From: liuzx Date: Tue, 23 Aug 2022 17:27:50 +0800 Subject: [PATCH 3/4] Delete cloudbrain task when deleting project --- models/cloudbrain.go | 6 ++++++ models/repo.go | 22 ---------------------- routers/repo/cloudbrain.go | 43 +++++++++++++++++++++++++++++++++++++++++-- routers/repo/grampus.go | 2 +- routers/repo/setting.go | 1 + 5 files changed, 49 insertions(+), 25 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 977a4ed65..c1c01b581 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1767,6 +1767,12 @@ func GetCloudbrainsNeededStopByRepoID(repoID int64) ([]*Cloudbrain, error) { return cloudBrains, err } +func GetCloudbrainsNeededDeleteByRepoID(repoID int64) ([]*Cloudbrain, error) { + cloudBrains := make([]*Cloudbrain, 0) + err := x.Where("repo_id=?", repoID).Find(&cloudBrains) + return cloudBrains, err +} + func GetCloudbrainsByDisplayJobName(repoID int64, jobType string, displayJobName string) ([]*Cloudbrain, error) { cloudBrains := make([]*Cloudbrain, 0) err := x.Cols("job_id", "job_name", "repo_id", "user_id", "job_type", "display_job_name").Where("repo_id=? AND job_type =? AND lower(display_job_name) = lower(?)", repoID, jobType, displayJobName).Find(&cloudBrains) diff --git a/models/repo.go b/models/repo.go index d104acce5..d4e3df853 100755 --- a/models/repo.go +++ b/models/repo.go @@ -1788,8 +1788,6 @@ func DeleteRepository(doer *User, uid, repoID int64) error { // Delete dataset attachment record and remove related files deleteDatasetAttachmentByRepoId(sess, repoID) - // Delete cloudbrain task record - deleteCloudbrainByRepoId(sess, repoID) if err = deleteBeans(sess, &Access{RepoID: repo.ID}, &Action{RepoID: repo.ID}, @@ -1989,26 +1987,6 @@ func deleteDatasetAttachmentByRepoId(sess *xorm.Session, repoId int64) error { return err } -func deleteCloudbrainByRepoId(sess *xorm.Session, repoId int64) error { - cloudbrains := make([]*Cloudbrain, 0) - if err := sess. - Where("repo_id = ?", repoId). - Find(&cloudbrains); err != nil { - return err - } - if len(cloudbrains) == 0 { - return nil - } - for _, cloudbrain := range cloudbrains { - err := DeleteJob(cloudbrain) - if err != nil { - return err - } - } - return nil - -} - // GetRepositoryByOwnerAndName returns the repository by given ownername and reponame. func GetRepositoryByOwnerAndName(ownerName, repoName string) (*Repository, error) { return getRepositoryByOwnerAndName(x, ownerName, repoName) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index c3c6c43cb..6876d0bbd 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1245,6 +1245,15 @@ func StopJobsByRepoID(repoID int64) { StopJobs(cloudBrains) } +func DeleteJobsByRepoID(repoID int64) { + cloudBrains, err := models.GetCloudbrainsNeededDeleteByRepoID(repoID) + if err != nil { + log.Warn("Failed to get cloudBrain info", err) + return + } + DeleteJobs(cloudBrains) +} + /** */ @@ -1280,6 +1289,36 @@ func StopJobs(cloudBrains []*models.Cloudbrain) { } } +func DeleteJobs(cloudBrains []*models.Cloudbrain) { + for _, taskInfo := range cloudBrains { + err := models.DeleteJob(taskInfo) + if err != nil { + log.Warn("Failed to DeleteJob:", err) + return + } + if taskInfo.Type == models.TypeCloudBrainOne || taskInfo.Type == models.TypeC2Net { + cloudbrain.DelCloudBrainJob(taskInfo.JobName) + DeleteCloudbrainJobStorage(taskInfo.JobName, models.TypeCloudBrainOne) + } + if taskInfo.Type == models.TypeCloudBrainTwo { + if taskInfo.JobType == string(models.JobTypeTrain) || taskInfo.JobType == string(models.JobTypeInference) { + + modelarts.DelTrainJob(taskInfo.JobID) + DeleteJobStorage(taskInfo.JobName) + } + if taskInfo.JobType == string(models.JobTypeDebug) { + modelarts.DelNotebook2(taskInfo.JobID) + } + } + if taskInfo.Type == models.TypeC2Net { + if taskInfo.JobType == string(models.JobTypeTrain) { + cloudbrain.DelCloudBrainJob(taskInfo.JobName) + DeleteCloudbrainJobStorage(taskInfo.JobName, models.TypeCloudBrainOne) + } + } + } +} + func retry(attempts int, sleep time.Duration, f func() error) (err error) { for i := 0; i < attempts; i++ { if i > 0 { @@ -1347,7 +1386,7 @@ func deleteCloudbrainJob(ctx *context.Context) error { return err } - deleteJobStorage(task.JobName, models.TypeCloudBrainOne) + DeleteCloudbrainJobStorage(task.JobName, models.TypeCloudBrainOne) return nil } @@ -1734,7 +1773,7 @@ func mkPathAndReadMeFile(path string, text string) error { return nil } -func deleteJobStorage(jobName string, cloudbrainType int) error { +func DeleteCloudbrainJobStorage(jobName string, cloudbrainType int) error { //delete local localJobPath := setting.JobPath + jobName err := os.RemoveAll(localJobPath) diff --git a/routers/repo/grampus.go b/routers/repo/grampus.go index abc2027d3..33e111df2 100755 --- a/routers/repo/grampus.go +++ b/routers/repo/grampus.go @@ -637,7 +637,7 @@ func deleteGrampusJob(ctx *context.Context) error { if task.ComputeResource == models.NPUResource { storageType = models.TypeCloudBrainTwo } - deleteJobStorage(task.JobName, storageType) + DeleteCloudbrainJobStorage(task.JobName, storageType) return nil } diff --git a/routers/repo/setting.go b/routers/repo/setting.go index fed89513a..78eaa1e00 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -495,6 +495,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { } log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name) go StopJobsByRepoID(repo.ID) + DeleteJobsByRepoID(repo.ID) ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success")) ctx.Redirect(ctx.Repo.Owner.DashboardLink()) From 739f68a389be3815c4f7398390e5054e513f2660 Mon Sep 17 00:00:00 2001 From: liuzx Date: Tue, 23 Aug 2022 17:57:29 +0800 Subject: [PATCH 4/4] Delete cloudbrain task when deleting project --- routers/repo/cloudbrain.go | 2 +- routers/repo/setting.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index 6876d0bbd..457f275ed 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -1296,7 +1296,7 @@ func DeleteJobs(cloudBrains []*models.Cloudbrain) { log.Warn("Failed to DeleteJob:", err) return } - if taskInfo.Type == models.TypeCloudBrainOne || taskInfo.Type == models.TypeC2Net { + if taskInfo.Type == models.TypeCloudBrainOne { cloudbrain.DelCloudBrainJob(taskInfo.JobName) DeleteCloudbrainJobStorage(taskInfo.JobName, models.TypeCloudBrainOne) } diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 78eaa1e00..3b9282ae9 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -494,8 +494,8 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) { return } log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name) - go StopJobsByRepoID(repo.ID) - DeleteJobsByRepoID(repo.ID) + // go StopJobsByRepoID(repo.ID) + go DeleteJobsByRepoID(repo.ID) ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success")) ctx.Redirect(ctx.Repo.Owner.DashboardLink())