From e8217ac514b7f074bb89385cae2603cf30f3055e Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 23 Feb 2026 14:00:09 +0200 Subject: [PATCH 1/2] more error logs and return correct msg --- src/components/c2d/compute_engine_docker.ts | 3 ++- .../core/compute/getStreamableLogs.ts | 8 +++++--- src/components/httpRoutes/compute.ts | 3 ++- src/test/unit/commands.test.ts | 20 +++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/components/c2d/compute_engine_docker.ts b/src/components/c2d/compute_engine_docker.ts index 2f20300c6..978693d49 100644 --- a/src/components/c2d/compute_engine_docker.ts +++ b/src/components/c2d/compute_engine_docker.ts @@ -1315,7 +1315,8 @@ export class C2DEngineDocker extends C2DEngine { follow: true }) } catch (e) { - return null + CORE_LOGGER.error(`getStreamableLogs failed for job ${jobId}: ${e?.message ?? e}`) + return } } diff --git a/src/components/core/compute/getStreamableLogs.ts b/src/components/core/compute/getStreamableLogs.ts index 45c701d28..d7edc7662 100644 --- a/src/components/core/compute/getStreamableLogs.ts +++ b/src/components/core/compute/getStreamableLogs.ts @@ -67,7 +67,8 @@ export class ComputeGetStreamableLogsHandler extends CommandHandler { return { stream: null, status: { - httpStatus: 404 + httpStatus: 404, + error: 'Job not found or not running' } } } @@ -80,12 +81,13 @@ export class ComputeGetStreamableLogsHandler extends CommandHandler { return response } catch (error) { - CORE_LOGGER.error(error.message) + const message = (error as Error)?.message ?? String(error) + CORE_LOGGER.error(message) return { stream: null, status: { httpStatus: 500, - error: error.message + error: message } } } diff --git a/src/components/httpRoutes/compute.ts b/src/components/httpRoutes/compute.ts index b664001b1..c949b9841 100644 --- a/src/components/httpRoutes/compute.ts +++ b/src/components/httpRoutes/compute.ts @@ -276,7 +276,8 @@ computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeStreamableLogs`, async (req, res.set(response.status.headers) response.stream.pipe(res) } else { - res.status(response.status.httpStatus).send(response.status.error) + const body = response.status.error ?? (response.status.httpStatus === 404 ? 'Job not found or not running' : 'Error') + res.status(response.status.httpStatus).send(body) } } catch (error) { HTTP_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error: ${error}`) diff --git a/src/test/unit/commands.test.ts b/src/test/unit/commands.test.ts index 9b358f2b8..3196f555a 100644 --- a/src/test/unit/commands.test.ts +++ b/src/test/unit/commands.test.ts @@ -10,6 +10,7 @@ import { ComputeGetEnvironmentsCommand, ComputeGetResultCommand, ComputeGetStatusCommand, + ComputeGetStreamableLogsCommand, ComputeInitializeCommand, PaidComputeStartCommand, ComputeStopCommand, @@ -47,6 +48,7 @@ import { PaidComputeStartHandler } from '../../components/core/compute/startComp import { ComputeStopHandler } from '../../components/core/compute/stopCompute.js' import { ComputeGetStatusHandler } from '../../components/core/compute/getStatus.js' import { ComputeGetResultHandler } from '../../components/core/compute/getResults.js' +import { ComputeGetStreamableLogsHandler } from '../../components/core/compute/getStreamableLogs.js' import { ComputeInitializeHandler } from '../../components/core/compute/initialize.js' import { StopNodeHandler } from '../../components/core/admin/stopNodeHandler.js' import { ReindexTxHandler } from '../../components/core/admin/reindexTxHandler.js' @@ -358,6 +360,24 @@ describe('Commands and handlers', () => { } expect(resultEnvHandler.validate(resultEnvCommand).valid).to.be.equal(false) + // ----------------------------------------- + // ComputeGetStreamableLogsHandler + const streamableLogsHandler: ComputeGetStreamableLogsHandler = + CoreHandlersRegistry.getInstance(node).getHandler( + PROTOCOL_COMMANDS.COMPUTE_GET_STREAMABLE_LOGS + ) + const streamableLogsCommand: ComputeGetStreamableLogsCommand = { + command: PROTOCOL_COMMANDS.COMPUTE_GET_STREAMABLE_LOGS, + consumerAddress: 'abcdef', + jobId: 'hash-jobid', + signature: '', + nonce: '' + } + expect(streamableLogsHandler.validate(streamableLogsCommand).valid).to.be.equal(false) + streamableLogsCommand.consumerAddress = '0x8F292046bb73595A978F4e7A131b4EBd03A15e8a' + streamableLogsCommand.jobId = undefined + expect(streamableLogsHandler.validate(streamableLogsCommand).valid).to.be.equal(false) + // ----------------------------------------- // ComputeInitializeHandler const initComputeHandler: ComputeInitializeHandler = CoreHandlersRegistry.getInstance( From c1e7307d4d34e4da0a5e8c28d14097535e2a3627 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Mon, 23 Feb 2026 14:03:08 +0200 Subject: [PATCH 2/2] lint fix --- src/components/c2d/compute_engine_docker.ts | 2 +- src/components/httpRoutes/compute.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/c2d/compute_engine_docker.ts b/src/components/c2d/compute_engine_docker.ts index 978693d49..8edf04904 100644 --- a/src/components/c2d/compute_engine_docker.ts +++ b/src/components/c2d/compute_engine_docker.ts @@ -1316,7 +1316,7 @@ export class C2DEngineDocker extends C2DEngine { }) } catch (e) { CORE_LOGGER.error(`getStreamableLogs failed for job ${jobId}: ${e?.message ?? e}`) - return + return null } } diff --git a/src/components/httpRoutes/compute.ts b/src/components/httpRoutes/compute.ts index c949b9841..1515d441e 100644 --- a/src/components/httpRoutes/compute.ts +++ b/src/components/httpRoutes/compute.ts @@ -276,7 +276,9 @@ computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeStreamableLogs`, async (req, res.set(response.status.headers) response.stream.pipe(res) } else { - const body = response.status.error ?? (response.status.httpStatus === 404 ? 'Job not found or not running' : 'Error') + const body = + response.status.error ?? + (response.status.httpStatus === 404 ? 'Job not found or not running' : 'Error') res.status(response.status.httpStatus).send(body) } } catch (error) {