Skip to content

Commit a8fbe61

Browse files
committed
added WaitForContainer func
1 parent ce8fa6b commit a8fbe61

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/service/jobs/job_queue.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/makeopensource/leviathan/common"
99
md "github.com/makeopensource/leviathan/models"
1010
"github.com/makeopensource/leviathan/service/docker"
11+
"github.com/makeopensource/leviathan/service/labs"
1112
"github.com/rs/zerolog/log"
1213
"gorm.io/gorm"
1314
"os"
@@ -20,14 +21,16 @@ type JobQueue struct {
2021
db *gorm.DB
2122
dkSrv *docker.DkService
2223
contextMap *md.Map[string, func()]
24+
labSrv *labs.LabService
2325
}
2426

25-
func NewJobQueue(totalJobs uint, db *gorm.DB, dk *docker.DkService) *JobQueue {
27+
func NewJobQueue(totalJobs uint, db *gorm.DB, dk *docker.DkService, lab *labs.LabService) *JobQueue {
2628
queue := &JobQueue{
2729
contextMap: &md.Map[string, func()]{},
2830
db: db,
2931
dkSrv: dk,
3032
jobSemaphore: md.NewWorkerSemaphore(int(totalJobs)),
33+
labSrv: lab,
3134
}
3235

3336
return queue
@@ -93,7 +96,7 @@ func (q *JobQueue) runJob(job *md.Job) {
9396
return
9497
}
9598

96-
logStatusCh := make(chan md.JobError, 1)
99+
logStatusCh := make(chan md.JobError)
97100

98101
q.setJobInProgress(job)
99102
err2 := client.StartContainer(contId)
@@ -102,13 +105,13 @@ func (q *JobQueue) runJob(job *md.Job) {
102105
return
103106
}
104107

105-
// start writing to log file so that
108+
// start writing to log file so that,
106109
// we can stream changes to the log file to the user
107110
go func() {
108111
logStatusCh <- writeLogs(client, job)
109112
}()
110113

111-
statusCh, errCh := client.Client.ContainerWait(context.Background(), contId, dk.WaitConditionNotRunning)
114+
statusCh, errCh := client.WaitForContainerStatusChange(contId)
112115
select {
113116
case <-statusCh:
114117
if mes := <-logStatusCh; mes != nil {
@@ -155,14 +158,6 @@ func (q *JobQueue) setupJob(msg *md.Job) (*docker.DkClient, string, md.JobError)
155158
if err != nil {
156159
return nil, "", md.JError("Failed to create image", err)
157160
}
158-
// folder structure is '/<id>/autolab/Dockerfile, get the <random id> folder path
159-
parent := filepath.Base(filepath.Dir(filepath.Dir(msg.LabData.DockerFilePath)))
160-
161-
if parent != "labs" { // do not delete if job is from a saved lab
162-
if err = os.RemoveAll(parent); err != nil {
163-
return nil, "", md.JError("failed to delete dockerfile", err)
164-
}
165-
}
166161
}
167162

168163
resources := dk.Resources{
@@ -171,7 +166,12 @@ func (q *JobQueue) setupJob(msg *md.Job) (*docker.DkClient, string, md.JobError)
171166
PidsLimit: &msg.LabData.JobLimits.PidsLimit,
172167
}
173168

174-
contId, err := machine.CreateNewContainer(msg.JobId, msg.LabData.ImageTag, filepath.Base(msg.TmpJobFolderPath), msg.LabData.JobEntryCmd, resources)
169+
contId, err := machine.CreateNewContainer(
170+
msg.JobId,
171+
msg.LabData.ImageTag,
172+
msg.LabData.JobEntryCmd,
173+
resources,
174+
)
175175
if err != nil {
176176
return nil, "", md.JError("unable to create job container", err)
177177
}

0 commit comments

Comments
 (0)