From 3a8d99c5e4f64a9426585943c40635eb183b47ae Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 28 May 2018 10:18:25 +0200 Subject: start/stop tasks --- app/client/common/header.component.js | 3 ++- app/client/socket/socket.live.js | 2 +- app/client/socket/socket.task.js | 10 +++++----- app/client/system/system.component.js | 6 +++--- app/client/system/system.reducer.js | 7 ++++++- app/client/types.js | 7 ++++--- app/relay/modules/test.js | 1 + app/relay/remote.js | 8 -------- app/relay/runner.js | 3 +++ 9 files changed, 25 insertions(+), 22 deletions(-) (limited to 'app') diff --git a/app/client/common/header.component.js b/app/client/common/header.component.js index 1e27856..29c3713 100644 --- a/app/client/common/header.component.js +++ b/app/client/common/header.component.js @@ -14,11 +14,12 @@ function Header(props) { {tools} + system dashboard checkpoints datasets results - live + live {props.fps} fps ) diff --git a/app/client/socket/socket.live.js b/app/client/socket/socket.live.js index 867b391..56fd279 100644 --- a/app/client/socket/socket.live.js +++ b/app/client/socket/socket.live.js @@ -5,7 +5,7 @@ import * as player from '../live/player' import { socket } from './socket.connection' socket.on('res', (data) => { - console.log(data.cmd) + console.log('socket:', data.cmd) switch (data.cmd) { case 'get_last_frame': if (data.res !== 'working') { diff --git a/app/client/socket/socket.task.js b/app/client/socket/socket.task.js index ba074c0..595066e 100644 --- a/app/client/socket/socket.task.js +++ b/app/client/socket/socket.task.js @@ -11,14 +11,14 @@ socket.on('task_res', (data) => { case 'start': // return dispatch({ type: types.system.rpc_connected, runner: data.runner }) break - case 'task_begin': - clearTimeout(finishTimeout) - return dispatch({ type: types.task.task_begin, task: data.task }) - break case 'stop': break + // begin and finish calls often arrive out of order, if the old task was preempted + case 'task_begin': + dispatch({ type: types.task.task_begin, task: data.task }) + break case 'task_finish': - return finishTimeout = setTimeout(() => dispatch({ type: types.task.task_finish, task: data.task }), 100) + dispatch({ type: types.task.task_finish, task: data.task }) break case 'kill': break diff --git a/app/client/system/system.component.js b/app/client/system/system.component.js index 2b09f38..b257573 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/client/system/system.reducer.js b/app/client/system/system.reducer.js index c29572e..f945a65 100644 --- a/app/client/system/system.reducer.js +++ b/app/client/system/system.reducer.js @@ -21,7 +21,7 @@ const systemInitialState = { }, rpc: { connected: false, - status: "unknown", + status: "disconnected", error: null, }, cmd: { @@ -169,6 +169,11 @@ const systemReducer = (state = systemInitialState, action) => { } return { ...state, + rpc: { + connected: false, + status: "disconnected", + error: null, + }, runner: { ...state.runner, [action.task.processor]: { status: 'IDLE', task: {} }, diff --git a/app/client/types.js b/app/client/types.js index 97a93c9..df5da72 100644 --- a/app/client/types.js +++ b/app/client/types.js @@ -25,9 +25,10 @@ export default { disconnect: 'SOCKET_DISCONNECT', error: 'SOCKET_ERROR', - load_params: 'LOAD_PARAMS', - list_sequences: 'LIST_SEQUENCES', - list_epochs: 'LIST_EPOCHS', + load_params: 'SOCKET_LOAD_PARAMS', + list_checkpoints: 'SOCKET_LIST_CHECKPOINTS', + list_sequences: 'SOCKET_LIST_SEQUENCES', + list_epochs: 'SOCKET_LIST_EPOCHS', }, player: { get_params: 'GET_PARAMS', diff --git a/app/relay/modules/test.js b/app/relay/modules/test.js index 1d7042e..b0753f8 100644 --- a/app/relay/modules/test.js +++ b/app/relay/modules/test.js @@ -16,6 +16,7 @@ const gpu = { const live = { type: 'python', script: 'test.py', + live: true, } export default { diff --git a/app/relay/remote.js b/app/relay/remote.js index c66929a..ff2d32b 100644 --- a/app/relay/remote.js +++ b/app/relay/remote.js @@ -5,7 +5,6 @@ const runner = require('./runner') export const remote = io.connect(process.env.SOCKETIO_REMOTE) remote.on('cmd', (data) => { - console.log('cmd data', data) if (! data.cmd) return console.log('malformed param...?') console.log('got', data.cmd) switch (data.cmd) { @@ -60,13 +59,6 @@ remote.on('task', (data) => { break case 'set_priority': break - // case 'get_status': - // remote.emit('task_res', { - // type: 'relay_status', - // rpc_connected: rpc_connected, - // runner: runner.status(), - // }) - // break default: response = { type: 'error', error: 'unknown task command' } break diff --git a/app/relay/runner.js b/app/relay/runner.js index ff32e81..906ddbf 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -3,6 +3,7 @@ import interpreters from './interpreters' import modules from './modules' import kill from 'tree-kill' import { remote } from './remote' +import { set_connected } from './rpc' import uuidv1 from 'uuid/v1' const idle_state = { status: 'IDLE', task: {} } @@ -171,6 +172,7 @@ export function run_task(task, preempt, watch){ console.log('task error', subprocess.exitCode, err) clear_task(interpreter.gpu, task) remote.emit('task_res', { type: 'task_error', task, err }) + set_connected(false) }) subprocess.on('close', () => { @@ -179,6 +181,7 @@ export function run_task(task, preempt, watch){ console.log('task ended', subprocess.exitCode || '') clear_task(interpreter.gpu, task) remote.emit('task_res', { type: 'task_finish', task }) + set_connected(false) }) } -- cgit v1.2.3-70-g09d2