From 9bb63160cc48111b0a57acaed85956cb9b82c59d Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 27 May 2018 04:33:08 +0200 Subject: stop a running process, if you have the uuid --- app/client/system/system.component.js | 6 +++--- app/relay/remote.js | 3 +-- app/relay/runner.js | 22 +++++++++++++++++++--- 3 files changed, 23 insertions(+), 8 deletions(-) (limited to 'app') diff --git a/app/client/system/system.component.js b/app/client/system/system.component.js index a663acf..2b09f38 100644 --- a/app/client/system/system.component.js +++ b/app/client/system/system.component.js @@ -79,15 +79,15 @@ class System extends Component { - + - + - + diff --git a/app/relay/remote.js b/app/relay/remote.js index 5979c68..c66929a 100644 --- a/app/relay/remote.js +++ b/app/relay/remote.js @@ -46,8 +46,7 @@ remote.on('task', (data) => { response = runner.run_task(data.task, data.preempt, data.watch) break case 'stop': - break - case 'kill': + response = runner.stop_task(data.task) break case 'add': break diff --git a/app/relay/runner.js b/app/relay/runner.js index 699a343..ff32e81 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -37,6 +37,7 @@ function serialize_task(t){ return { status: 'RUNNING', task: t.task, + uuid: t.task.uuid, pid: t.subprocess.pid, } } @@ -51,6 +52,7 @@ function clear_task(is_gpu, task){ } } } + export function status () { return { cpu: serialize_task(state.current_cpu_task), @@ -114,7 +116,7 @@ export function run_task(task, preempt, watch){ if (interpreter.gpu && state.current_gpu_task.status !== 'IDLE') { if (preempt) { console.log('preempting currently running GPU task') - kill_task(state.current_gpu_task.subprocess) + terminate(state.current_gpu_task.subprocess) } else { console.log('already running GPU task :(', state.current_gpu_task.pid) return { type: 'error', error: 'task already running on gpu' } @@ -122,7 +124,7 @@ export function run_task(task, preempt, watch){ } else if (!interpreter.gpu && state.current_cpu_task.status !== 'IDLE') { if (preempt) { console.log('preempting currently running CPU task') - kill_task(state.current_cpu_task.subprocess) + terminate(state.current_cpu_task.subprocess) } else { console.log('already running CPU task :(') return { type: 'error', error: 'task already running on cpu' } @@ -180,7 +182,21 @@ export function run_task(task, preempt, watch){ }) } -export function kill_task(subprocess){ +export function stop_task(task){ + if (state.current_cpu_task.task.uuid === task.uuid) { + terminate(state.current_cpu_task.subprocess) + return { status: 'ok' } + } else if (state.current_gpu_task.task.uuid === task.uuid) { + terminate(state.current_gpu_task.subprocess) + return { status: 'ok' } + } + return { error: 'no such task' } +} + +export function terminate(subprocess){ + if (!subprocess) { + return + } console.log('kill pid', subprocess.pid) kill(subprocess.pid) } \ No newline at end of file -- cgit v1.2.3-70-g09d2