Pular para o conteúdo principal

Job response

Formato​

{
"trace_id": "tr-123",
"status": "success",
"stdout": "42\n",
"stderr": null,
"exception": null,
"executionTime": 34,
"exit_code": 0
}

O valor de executionTime é ilustrativo.

Campos​

CampoTipoDescrição
trace_idstringo mesmo do job
statusstring"success" quando o guest executou o job; "failed" quando recusou (linguagem desconhecida, stdin grande demais) ou não conseguiu preparar o diretório
stdoutstringsaída padrão
stderrstring ou nullnull quando vazio
exceptionstring ou null"Timeout", "Compilation failed" ou erro de preparação
executionTimeinteiroms medidos dentro do guest, do início da compilação/execução ao fim
exit_codeinteirocódigo de saída do programa; omitido quando 0
errorstringmotivo de recusa; omitido quando vazio

Como ler o resultado​

"status": "success" diz que a execução aconteceu, não que o programa deu certo.

Situaçãostatusexceptionstderrexit_code
programa terminou bemsuccessnullo que o programa escreveu, ou null0
programa saiu com errosuccessnullo erro≠ 0
falha de compilaçãosuccess"Compilation failed"saída do compilador—
estourou o timeoutsuccess"Timeout"o que houver—

Go é exceção na linha da compilação: roda por go run, que compila e executa num passo só, e o erro de compilação chega só no stderr, com exception nulo.

O que a API faz com o resultado​

Em /api/v1/run e /api/v1/execute, a API repassa status, stdout, stderr, exception, executionTime e error; o exit_code não aparece. Ele aparece como exitCode no evento result de /api/v1/execute/stream e na resposta do exec de máquina. A CLI o mostra na linha de resumo do rc run e sai com rc 1 quando ele é diferente de zero; o rc machine exec sai com o próprio código do comando.

Se o guest não responde dentro do timeout do job mais uma folga do host, a VM é morta e a API devolve "status": "failed" com "error": "E001: operation timed out".