From a1cbfed453073c3a0cd3c35f0cc19d7175eb05a4 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 22 Jan 2026 13:58:44 +0200 Subject: [PATCH 1/2] Logs, filter 0 amount resources --- src/components/c2d/compute_engine_base.ts | 14 +++++++++++--- src/components/c2d/compute_engine_docker.ts | 2 +- src/components/core/compute/startCompute.ts | 19 ++++++++++++++++--- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/components/c2d/compute_engine_base.ts b/src/components/c2d/compute_engine_base.ts index 4fdc351ec..719a8fe7a 100644 --- a/src/components/c2d/compute_engine_base.ts +++ b/src/components/c2d/compute_engine_base.ts @@ -292,7 +292,10 @@ export abstract class C2DEngine { env: ComputeEnvironment, isFree: boolean ) { - for (const request of resourcesRequest) { + // Filter out resources with amount 0 as they're not actually being requested + const activeResources = resourcesRequest.filter((r) => r.amount > 0) + + for (const request of activeResources) { let envResource = this.getResource(env.resources, request.id) if (!envResource) throw new Error(`No such resource ${request.id}`) if (envResource.total - envResource.inUse < request.amount) @@ -348,9 +351,11 @@ export abstract class C2DEngine { ): dockerDeviceRequest[] | null { if (!resources) return null + // Filter out resources with amount 0 as they're not actually being requested + const activeResources = requests.filter((r) => r.amount > 0) const grouped: Record = {} - for (const resource of requests) { + for (const resource of activeResources) { const res = this.getResource(resources, resource.id) const init = res?.init?.deviceRequests if (!init) continue @@ -388,7 +393,10 @@ export abstract class C2DEngine { IpcMode: null as string, ShmSize: 0 as number } - for (const resource of requests) { + // Filter out resources with amount 0 as they're not actually being requested + const activeResources = requests.filter((r) => r.amount > 0) + + for (const resource of activeResources) { const res = this.getResource(resources, resource.id) if (res.init && res.init.advanced) { for (const [key, value] of Object.entries(res.init.advanced)) { diff --git a/src/components/c2d/compute_engine_docker.ts b/src/components/c2d/compute_engine_docker.ts index a3e8595b2..289aa411c 100644 --- a/src/components/c2d/compute_engine_docker.ts +++ b/src/components/c2d/compute_engine_docker.ts @@ -946,7 +946,7 @@ export class C2DEngineDocker extends C2DEngine { job.environment, null ) - await this.checkIfResourcesAreAvailable(job.resources, env, true) + await this.checkIfResourcesAreAvailable(job.resources, env, job.isFree) } catch (err) { // resources are still not available return diff --git a/src/components/core/compute/startCompute.ts b/src/components/core/compute/startCompute.ts index 519148312..5569a9896 100644 --- a/src/components/core/compute/startCompute.ts +++ b/src/components/core/compute/startCompute.ts @@ -92,6 +92,8 @@ export class PaidComputeStartHandler extends CommandHandler { try { engine = await node.getC2DEngines().getC2DByHash(hash) } catch (e) { + const errMsg = e?.message || String(e) + CORE_LOGGER.error(`Invalid C2D Environment: ${errMsg}`) return { stream: null, status: { @@ -121,22 +123,26 @@ export class PaidComputeStartHandler extends CommandHandler { false ) } catch (e) { + const errMsg = e?.message || String(e) + CORE_LOGGER.error(`Error checking and filling missing resources: ${errMsg}`) return { stream: null, status: { httpStatus: 400, - error: e?.message || String(e) + error: errMsg } } } try { - await engine.checkIfResourcesAreAvailable(task.resources, env, true) + await engine.checkIfResourcesAreAvailable(task.resources, env, false) } catch (e) { if (task.queueMaxWaitTime > 0) { CORE_LOGGER.verbose( `Compute resources not available, queuing job for max ${task.queueMaxWaitTime} seconds` ) } else { + const errMsg = e?.message || String(e) + CORE_LOGGER.error(`Error checking if resources are available: ${errMsg}`) return { stream: null, status: { @@ -504,6 +510,8 @@ export class PaidComputeStartHandler extends CommandHandler { ) ) } catch (e) { + const errMsg = e?.message || String(e) + CORE_LOGGER.error(`Error creating lock: ${errMsg}`) if (e.message.includes('insufficient funds for intrinsic transaction cost')) { return { stream: null, @@ -555,6 +563,8 @@ export class PaidComputeStartHandler extends CommandHandler { } } } catch (e) { + const errMsg = e?.message || String(e) + CORE_LOGGER.error(`Error starting compute job: ${errMsg}`) try { await engine.escrow.cancelExpiredLocks( task.payment.chainId, @@ -563,6 +573,8 @@ export class PaidComputeStartHandler extends CommandHandler { task.consumerAddress ) } catch (cancelError) { + const cancelErrMsg = cancelError?.message || String(cancelError) + CORE_LOGGER.error(`Error canceling expired locks: ${cancelErrMsg}`) // is fine if it fails } return { @@ -574,7 +586,8 @@ export class PaidComputeStartHandler extends CommandHandler { } } } catch (error) { - CORE_LOGGER.error(error.message) + const errMsg = error?.message || String(error) + CORE_LOGGER.error(`Error starting compute job: ${errMsg}`) return { stream: null, status: { From 976ffe04e1c03e393c357dcd3c3a1ca0f0c4d196 Mon Sep 17 00:00:00 2001 From: giurgiur99 Date: Thu, 22 Jan 2026 13:59:57 +0200 Subject: [PATCH 2/2] lint fix --- src/components/c2d/compute_engine_base.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/c2d/compute_engine_base.ts b/src/components/c2d/compute_engine_base.ts index 719a8fe7a..bbd04b5b6 100644 --- a/src/components/c2d/compute_engine_base.ts +++ b/src/components/c2d/compute_engine_base.ts @@ -294,7 +294,7 @@ export abstract class C2DEngine { ) { // Filter out resources with amount 0 as they're not actually being requested const activeResources = resourcesRequest.filter((r) => r.amount > 0) - + for (const request of activeResources) { let envResource = this.getResource(env.resources, request.id) if (!envResource) throw new Error(`No such resource ${request.id}`) @@ -395,7 +395,7 @@ export abstract class C2DEngine { } // Filter out resources with amount 0 as they're not actually being requested const activeResources = requests.filter((r) => r.amount > 0) - + for (const resource of activeResources) { const res = this.getResource(resources, resource.id) if (res.init && res.init.advanced) {