diff --git a/packages/backend/src/job/job.service.ts b/packages/backend/src/job/job.service.ts index cc0c633..8cfca37 100644 --- a/packages/backend/src/job/job.service.ts +++ b/packages/backend/src/job/job.service.ts @@ -45,6 +45,13 @@ export class JobService { // this.jobTemplate.spec.ttlSecondsAfterFinished = 30; this.jobTemplate.spec.template = new V1PodTemplateSpec(); this.jobTemplate.spec.template.spec = new V1PodSpec(); + + this.jobTemplate.spec.template.spec.volumes = []; + this.jobTemplate.spec.template.spec.volumes.push({ + name: 'sim-files', + emptyDir: {} + }); + this.jobTemplate.spec.template.spec.containers = []; this.jobTemplate.spec.template.spec.containers.push({ resources: { @@ -65,6 +72,10 @@ export class JobService { { name: 'REDIS_PORT', value: this.configService.getOrThrow('redis.jobPort') }, { name: 'REDIS_PASSWORD', value: this.configService.get('redis.jobPassword') }, { name: 'COMETS_GLOP', value: './lib/comets_glop' } + ], + imagePullPolicy: 'Always', + volumeMounts: [ + { name: 'sim-files', mountPath: '/app/sim_files/' } ] }); this.jobTemplate.spec.template.spec.restartPolicy = 'Never'; diff --git a/packages/backend/src/simulation/simulation.consumer.ts b/packages/backend/src/simulation/simulation.consumer.ts index b11e195..270f5ba 100644 --- a/packages/backend/src/simulation/simulation.consumer.ts +++ b/packages/backend/src/simulation/simulation.consumer.ts @@ -13,19 +13,14 @@ export class SimulationRequestConsumer extends WorkerHost { async process(job: Job): Promise { const request = job.data; // Start the COMETs job - try { - const jobName = await this.jobService.triggerJob(request); - // Wait for the job to complete - const status = await this.awaitCompletion(jobName); - // If the status is error, collect and send error data - if (status == JobStatus.FAILURE) { - await this.handleError(request, jobName); - } else { - await this.handleSuccess(request, jobName); - } - } catch (e) { - console.error(e); - throw e; + const jobName = await this.jobService.triggerJob(request); + // Wait for the job to complete + const status = await this.awaitCompletion(jobName); + // If the status is error, collect and send error data + if (status == JobStatus.FAILURE) { + await this.handleError(request, jobName); + } else { + await this.handleSuccess(request, jobName); } } @@ -50,14 +45,18 @@ export class SimulationRequestConsumer extends WorkerHost { * Keep checking the status of the job once a second */ private async awaitCompletion(jobName: string): Promise { - return new Promise(async (resolve, _reject) => { + return new Promise(async (resolve, reject) => { const checkOperations = async () => { - const status = await this.jobService.getJobStatus(jobName); - if (status == JobStatus.RUNNING) { - setTimeout(checkOperations, 1000); - return; - } else { - resolve(status); + try { + const status = await this.jobService.getJobStatus(jobName); + if (status == JobStatus.RUNNING) { + setTimeout(checkOperations, 1000); + return; + } else { + resolve(status); + } + } catch (e) { + reject(e); } }; await checkOperations(); diff --git a/packages/runner/.gitignore b/packages/runner/.gitignore index 6543d6c..4109019 100644 --- a/packages/runner/.gitignore +++ b/packages/runner/.gitignore @@ -1,6 +1,5 @@ venv/ -sim_files/ -!sim_files/.gitkeep +sim_files/* sample.sh sample-docker.sh sample-petri.sh