From a514f2ed74d334634eb07462d32a80c85a7734f1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 00:55:59 +0000 Subject: [PATCH 01/19] Initial plan From d9b9bbe0986f1c89a7aa392944ddabe8c5c6503b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:04:30 +0000 Subject: [PATCH 02/19] Initial analysis and build fix plan Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- bun.lock | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bun.lock b/bun.lock index 13e994e..0f88fd2 100644 --- a/bun.lock +++ b/bun.lock @@ -10,7 +10,7 @@ "@istanbuljs/schema": "^0.1.3", "@types/bun": "^1.3.1", "@types/jest": "^30.0.0", - "@types/node": "24.9.1", + "@types/node": "24.9.2", "@types/ws": "^8.18.1", "cross-env": "^10.1.0", "type-coverage": "^2.29.7", @@ -61,7 +61,7 @@ "@types/jest": ["@types/jest@30.0.0", "", { "dependencies": { "expect": "^30.0.0", "pretty-format": "^30.0.0" } }, "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA=="], - "@types/node": ["@types/node@24.9.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg=="], + "@types/node": ["@types/node@24.9.2", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA=="], "@types/react": ["@types/react@19.2.2", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA=="], @@ -191,6 +191,8 @@ "@types/ws/@types/node": ["@types/node@24.7.1", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-CmyhGZanP88uuC5GpWU9q+fI61j2SkhO3UGMUdfYRE6Bcy0ccyzn1Rqj9YAB/ZY4kOXmNf0ocah5GtphmLMP6Q=="], + "bun-types/@types/node": ["@types/node@24.9.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg=="], + "chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "jest-mock/@types/node": ["@types/node@24.7.1", "", { "dependencies": { "undici-types": "~7.14.0" } }, "sha512-CmyhGZanP88uuC5GpWU9q+fI61j2SkhO3UGMUdfYRE6Bcy0ccyzn1Rqj9YAB/ZY4kOXmNf0ocah5GtphmLMP6Q=="], From bb225b0bc4df1b23d1240d6b8ec9df2b54c22005 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:06:01 +0000 Subject: [PATCH 03/19] Fix build errors: add missing exec variable and fix type mismatch Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 44 +++++++++++++++++--------------- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 45 ++++++++++++++++++--------------- 4 files changed, 51 insertions(+), 42 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index af78dc1..f187850 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YA2DZ,MAAM;CAsdrB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YA2DZ,MAAM;CA2drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index 9a9803b..56f33b9 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -289,29 +289,29 @@ export class WorkflowPool extends TypedEventTarget { for (const jobPayload of waitingJobs) { if (reservedJobIds.has(jobPayload.jobId)) continue; // Skip if already reserved - const canRun = this.clientManager.canClientRunJob(client, jobPayload); + const job = this.jobStore.get(jobPayload.jobId); + if (!job) + continue; // Job not found in store, skip + const canRun = this.clientManager.canClientRunJob(client, job); if (canRun) { const reservation = await this.queue.reserveById(jobPayload.jobId); if (reservation) { - const job = this.jobStore.get(jobPayload.jobId); - if (job) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(client.id); - reservedJobIds.add(job.jobId); - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(job, client.id); - if (lease) { - this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); - }); - } - else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - } - break; // Move to the next idle client + // Mark as leased/reserved for this cycle + leasedClientIds.add(client.id); + reservedJobIds.add(job.jobId); + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(job, client.id); + if (lease) { + this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); } + else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); + } + break; // Move to the next idle client } } } @@ -503,7 +503,9 @@ export class WorkflowPool extends TypedEventTarget { }); let resolveCompletion; let completionError; - const completionPromise = new Promise((resolve) => { + // completionPromise is used to track when the wrapper completes (success or failure) + // It's resolved in onFinished and onFailed handlers + new Promise((resolve) => { resolveCompletion = resolve; }); let jobStartedDispatched = false; @@ -621,6 +623,8 @@ export class WorkflowPool extends TypedEventTarget { resolveCompletion?.(); }); try { + // Start the workflow execution + const exec = wrapper.run(); // Add timeout for execution start to prevent jobs getting stuck const executionStartTimeout = this.opts.executionStartTimeoutMs ?? 5000; let pendingTimeoutId; diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index b831be5..7b7425b 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index fc0ce39..20815c2 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -500,29 +500,29 @@ export class WorkflowPool extends TypedEventTarget { for (const jobPayload of waitingJobs) { if (reservedJobIds.has(jobPayload.jobId)) continue; // Skip if already reserved - const canRun = this.clientManager.canClientRunJob(client, jobPayload); + const job = this.jobStore.get(jobPayload.jobId); + if (!job) continue; // Job not found in store, skip + + const canRun = this.clientManager.canClientRunJob(client, job); if (canRun) { const reservation = await this.queue.reserveById(jobPayload.jobId); if (reservation) { - const job = this.jobStore.get(jobPayload.jobId); - if (job) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(client.id); - reservedJobIds.add(job.jobId); - - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(job, client.id); - if (lease) { - this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); - }); - } else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - } - break; // Move to the next idle client + // Mark as leased/reserved for this cycle + leasedClientIds.add(client.id); + reservedJobIds.add(job.jobId); + + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(job, client.id); + if (lease) { + this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); + } else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); } + break; // Move to the next idle client } } } @@ -747,7 +747,9 @@ export class WorkflowPool extends TypedEventTarget { let resolveCompletion: (() => void) | undefined; let completionError: unknown; - const completionPromise = new Promise((resolve) => { + // completionPromise is used to track when the wrapper completes (success or failure) + // It's resolved in onFinished and onFailed handlers + new Promise((resolve) => { resolveCompletion = resolve; }); @@ -890,6 +892,9 @@ export class WorkflowPool extends TypedEventTarget { }); try { + // Start the workflow execution + const exec = wrapper.run(); + // Add timeout for execution start to prevent jobs getting stuck const executionStartTimeout = this.opts.executionStartTimeoutMs ?? 5000; let pendingTimeoutId: NodeJS.Timeout | undefined; From 3dd2e6a99d80c58d9595cb373d2d0f5544e06e32 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:07:14 +0000 Subject: [PATCH 04/19] Optimize queue processing with selectivity-based job matching Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 85 +++++++++++++++++----------- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 99 ++++++++++++++++++++++----------- 4 files changed, 124 insertions(+), 64 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index f187850..cad7187 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YA2DZ,MAAM;CA2drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgGZ,MAAM;CA2drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index 56f33b9..1e9b6a8 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -282,37 +282,60 @@ export class WorkflowPool extends TypedEventTarget { } const leasedClientIds = new Set(); const reservedJobIds = new Set(); - for (const client of idleClients) { - if (leasedClientIds.has(client.id)) - continue; // Skip if already leased in this cycle - // Find the first job that this client can run - for (const jobPayload of waitingJobs) { - if (reservedJobIds.has(jobPayload.jobId)) - continue; // Skip if already reserved - const job = this.jobStore.get(jobPayload.jobId); - if (!job) - continue; // Job not found in store, skip - const canRun = this.clientManager.canClientRunJob(client, job); - if (canRun) { - const reservation = await this.queue.reserveById(jobPayload.jobId); - if (reservation) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(client.id); - reservedJobIds.add(job.jobId); - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(job, client.id); - if (lease) { - this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); - }); - } - else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - } - break; // Move to the next idle client - } + const jobMatchInfos = []; + for (const jobPayload of waitingJobs) { + const job = this.jobStore.get(jobPayload.jobId); + if (!job) + continue; + const compatibleClients = idleClients + .filter(client => this.clientManager.canClientRunJob(client, job)) + .map(client => client.id); + if (compatibleClients.length > 0) { + jobMatchInfos.push({ + jobPayload, + job, + compatibleClients, + selectivity: compatibleClients.length + }); + } + } + // Sort jobs by selectivity (most selective first) to maximize throughput + // More selective jobs (fewer compatible clients) should be assigned first + // This prevents clients from taking jobs when there are jobs only they can run + jobMatchInfos.sort((a, b) => { + // Primary: selectivity (fewer compatible clients = higher priority) + if (a.selectivity !== b.selectivity) { + return a.selectivity - b.selectivity; + } + // Secondary: maintain queue order (earlier jobs first) + const aIndex = waitingJobs.indexOf(a.jobPayload); + const bIndex = waitingJobs.indexOf(b.jobPayload); + return aIndex - bIndex; + }); + // Assign jobs to clients using the selectivity-based ordering + for (const matchInfo of jobMatchInfos) { + if (reservedJobIds.has(matchInfo.job.jobId)) + continue; + // Find first available compatible client + const availableClient = matchInfo.compatibleClients.find(clientId => !leasedClientIds.has(clientId)); + if (!availableClient) + continue; // No available clients for this job + const reservation = await this.queue.reserveById(matchInfo.job.jobId); + if (reservation) { + // Mark as leased/reserved for this cycle + leasedClientIds.add(availableClient); + reservedJobIds.add(matchInfo.job.jobId); + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(matchInfo.job, availableClient); + if (lease) { + this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); + } + else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } } } diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 7b7425b..01fe9f2 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 20815c2..4bd28a1 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -493,37 +493,74 @@ export class WorkflowPool extends TypedEventTarget { const leasedClientIds = new Set(); const reservedJobIds = new Set(); - for (const client of idleClients) { - if (leasedClientIds.has(client.id)) continue; // Skip if already leased in this cycle - - // Find the first job that this client can run - for (const jobPayload of waitingJobs) { - if (reservedJobIds.has(jobPayload.jobId)) continue; // Skip if already reserved - - const job = this.jobStore.get(jobPayload.jobId); - if (!job) continue; // Job not found in store, skip - - const canRun = this.clientManager.canClientRunJob(client, job); - if (canRun) { - const reservation = await this.queue.reserveById(jobPayload.jobId); - if (reservation) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(client.id); - reservedJobIds.add(job.jobId); - - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(job, client.id); - if (lease) { - this.runJob({ reservation, job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); - }); - } else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${client.id} for job ${job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - } - break; // Move to the next idle client - } + // Build compatibility matrix and calculate job selectivity + interface JobMatchInfo { + jobPayload: typeof waitingJobs[0]; + job: JobRecord; + compatibleClients: string[]; + selectivity: number; // Lower is more selective (fewer compatible clients) + } + + const jobMatchInfos: JobMatchInfo[] = []; + for (const jobPayload of waitingJobs) { + const job = this.jobStore.get(jobPayload.jobId); + if (!job) continue; + + const compatibleClients = idleClients + .filter(client => this.clientManager.canClientRunJob(client, job)) + .map(client => client.id); + + if (compatibleClients.length > 0) { + jobMatchInfos.push({ + jobPayload, + job, + compatibleClients, + selectivity: compatibleClients.length + }); + } + } + + // Sort jobs by selectivity (most selective first) to maximize throughput + // More selective jobs (fewer compatible clients) should be assigned first + // This prevents clients from taking jobs when there are jobs only they can run + jobMatchInfos.sort((a, b) => { + // Primary: selectivity (fewer compatible clients = higher priority) + if (a.selectivity !== b.selectivity) { + return a.selectivity - b.selectivity; + } + // Secondary: maintain queue order (earlier jobs first) + const aIndex = waitingJobs.indexOf(a.jobPayload); + const bIndex = waitingJobs.indexOf(b.jobPayload); + return aIndex - bIndex; + }); + + // Assign jobs to clients using the selectivity-based ordering + for (const matchInfo of jobMatchInfos) { + if (reservedJobIds.has(matchInfo.job.jobId)) continue; + + // Find first available compatible client + const availableClient = matchInfo.compatibleClients.find( + clientId => !leasedClientIds.has(clientId) + ); + + if (!availableClient) continue; // No available clients for this job + + const reservation = await this.queue.reserveById(matchInfo.job.jobId); + if (reservation) { + // Mark as leased/reserved for this cycle + leasedClientIds.add(availableClient); + reservedJobIds.add(matchInfo.job.jobId); + + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(matchInfo.job, availableClient); + if (lease) { + this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); + } else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } } } From c25cd449b3a5d5a6dc0544433cf818bbe86ab3ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:13:34 +0000 Subject: [PATCH 05/19] Add priority support to selectivity-based queue algorithm and fix indentation Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 17 +++++++---- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 21 +++++++++----- test/workflow-pool.spec.ts | 51 +++++++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 14 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index cad7187..9f4f383 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgGZ,MAAM;CA2drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAuGZ,MAAM;CA2drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index 1e9b6a8..d905fcc 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -299,15 +299,22 @@ export class WorkflowPool extends TypedEventTarget { }); } } - // Sort jobs by selectivity (most selective first) to maximize throughput - // More selective jobs (fewer compatible clients) should be assigned first - // This prevents clients from taking jobs when there are jobs only they can run + // Sort jobs by priority first, then selectivity, to maximize throughput + // 1. Higher priority jobs execute first (explicit user priority) + // 2. More selective jobs (fewer compatible clients) assigned first within same priority + // 3. Earlier queue position as final tiebreaker jobMatchInfos.sort((a, b) => { - // Primary: selectivity (fewer compatible clients = higher priority) + // Primary: priority (higher priority = higher precedence) + const aPriority = a.job.options.priority ?? 0; + const bPriority = b.job.options.priority ?? 0; + if (aPriority !== bPriority) { + return bPriority - aPriority; // Higher priority first + } + // Secondary: selectivity (fewer compatible clients = higher precedence) if (a.selectivity !== b.selectivity) { return a.selectivity - b.selectivity; } - // Secondary: maintain queue order (earlier jobs first) + // Tertiary: maintain queue order (earlier jobs first) const aIndex = waitingJobs.indexOf(a.jobPayload); const bIndex = waitingJobs.indexOf(b.jobPayload); return aIndex - bIndex; diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 01fe9f2..5acc37e 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 4bd28a1..c5b4986 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -520,15 +520,22 @@ export class WorkflowPool extends TypedEventTarget { } } - // Sort jobs by selectivity (most selective first) to maximize throughput - // More selective jobs (fewer compatible clients) should be assigned first - // This prevents clients from taking jobs when there are jobs only they can run + // Sort jobs by priority first, then selectivity, to maximize throughput + // 1. Higher priority jobs execute first (explicit user priority) + // 2. More selective jobs (fewer compatible clients) assigned first within same priority + // 3. Earlier queue position as final tiebreaker jobMatchInfos.sort((a, b) => { - // Primary: selectivity (fewer compatible clients = higher priority) + // Primary: priority (higher priority = higher precedence) + const aPriority = a.job.options.priority ?? 0; + const bPriority = b.job.options.priority ?? 0; + if (aPriority !== bPriority) { + return bPriority - aPriority; // Higher priority first + } + // Secondary: selectivity (fewer compatible clients = higher precedence) if (a.selectivity !== b.selectivity) { return a.selectivity - b.selectivity; } - // Secondary: maintain queue order (earlier jobs first) + // Tertiary: maintain queue order (earlier jobs first) const aIndex = waitingJobs.indexOf(a.jobPayload); const bIndex = waitingJobs.indexOf(b.jobPayload); return aIndex - bIndex; @@ -558,8 +565,8 @@ export class WorkflowPool extends TypedEventTarget { console.error("[WorkflowPool] Unhandled job error", error); }); } else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } } diff --git a/test/workflow-pool.spec.ts b/test/workflow-pool.spec.ts index f18120a..2f234de 100644 --- a/test/workflow-pool.spec.ts +++ b/test/workflow-pool.spec.ts @@ -300,4 +300,55 @@ describe("WorkflowPool", () => { await pool.shutdown(); }); + + it("respects job priority when processing queue", async () => { + const client = new FakeWorkflowClient("client-priority"); + const pool = new WorkflowPool([client as any], { failoverStrategy }); + await pool.ready(); + + const completionOrder: string[] = []; + + pool.on("job:accepted", (ev) => { + const job = ev.detail.job; + const name = job.options.metadata?.name as string; + completionOrder.push(name); + + const promptId = job.promptId!; + setTimeout(() => { + void client.completePrompt(promptId, { "1": { data: { ok: true } } }); + }, 0); + }); + + // Enqueue all jobs quickly so they're in queue before processing starts + const enqueuePromises = [ + pool.enqueue({ "1": { class_type: "test" } }, { + priority: 1, + metadata: { name: "low-priority" } + }), + pool.enqueue({ "1": { class_type: "test" } }, { + priority: 10, + metadata: { name: "high-priority" } + }), + pool.enqueue({ "1": { class_type: "test" } }, { + priority: 5, + metadata: { name: "medium-priority" } + }) + ]; + + await Promise.all(enqueuePromises); + + // Wait for all jobs to complete + await new Promise((resolve) => { + let completed = 0; + pool.on("job:completed", () => { + completed++; + if (completed === 3) resolve(); + }); + }); + + // Verify execution order respects priority (high > medium > low) + expect(completionOrder).toEqual(["high-priority", "medium-priority", "low-priority"]); + + await pool.shutdown(); + }); }); From f1e691191200511e525f4c162aa5d2ab3c73e61c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:17:02 +0000 Subject: [PATCH 06/19] Add queue optimization documentation and update simulation scripts Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- docs/queue-optimization.md | 150 +++++++++++++++++++++++++++ scripts/two-stage-edit-simulation.ts | 4 + 2 files changed, 154 insertions(+) create mode 100644 docs/queue-optimization.md diff --git a/docs/queue-optimization.md b/docs/queue-optimization.md new file mode 100644 index 0000000..f581b6a --- /dev/null +++ b/docs/queue-optimization.md @@ -0,0 +1,150 @@ +# WorkflowPool Queue Optimization + +## Overview + +The WorkflowPool queue processing has been optimized to maximize throughput in heterogeneous clusters where clients have different capabilities or workflow affinities. + +## What Changed + +### Previous Algorithm (First-Fit) +The previous queue processing used a simple greedy first-fit approach: +- For each idle client, iterate through waiting jobs in order +- Assign the first job that the client can run +- Move to the next client + +**Problem**: This could leave clients idle when there are jobs they could run further down the queue. + +**Example**: +- Client A can only run workflow type X +- Client B can run both X and Y +- Queue: [Job Y, Job X] +- **Result**: Client B takes Job Y, then Client A sits idle until Job X is processed + +### New Algorithm (Selectivity-Based) +The new queue processing uses a selectivity-based matching algorithm: +1. Build compatibility matrix for all idle clients and waiting jobs +2. Calculate job selectivity (number of compatible clients) +3. Sort jobs by: + - **Primary**: Priority (higher priority first) + - **Secondary**: Selectivity (fewer compatible clients first) + - **Tertiary**: Queue order (FIFO as tiebreaker) +4. Assign jobs to available compatible clients + +**Benefits**: +- Prevents clients from taking versatile jobs when specialized jobs need them +- Maximizes cluster utilization in heterogeneous environments +- Respects explicit job priorities for live queue management + +**Same Example**: +- Client A can only run workflow type X +- Client B can run both X and Y +- Queue: [Job Y, Job X] +- **Analysis**: Job X has selectivity=1 (only Client A), Job Y has selectivity=2 (both clients) +- **Result**: Job X assigned to Client A first (more selective), then Job Y to Client B (both busy!) + +## Priority Support + +Jobs can now be enqueued with numeric priorities to control execution order: + +```typescript +// High priority job (executes first) +await pool.enqueue(urgentWorkflow, { + priority: 10, + metadata: { urgent: true } +}); + +// Normal priority job +await pool.enqueue(normalWorkflow, { + priority: 0 // default +}); + +// Low priority job (executes last) +await pool.enqueue(backgroundWorkflow, { + priority: -5 +}); +``` + +Priority takes precedence over selectivity, so high-priority jobs execute first regardless of how many clients can run them. + +## Testing with Real Servers + +### Two-Stage Edit Simulation + +The `two-stage-edit-simulation.ts` script demonstrates the optimization with real ComfyUI servers: + +```bash +# Set up environment +export TWO_STAGE_HOSTS="http://server1:8188,http://server2:8188,http://server3:8188" +export TWO_STAGE_RUNTIME_MS=600000 # 10 minutes +export TWO_STAGE_CONCURRENCY=3 # 3 parallel workers +export TWO_STAGE_MIN_DELAY_MS=1000 # 1 second between jobs +export TWO_STAGE_MAX_DELAY_MS=5000 # 5 seconds max + +# Run simulation +bun scripts/two-stage-edit-simulation.ts +``` + +**What it does**: +1. **Generation stage**: Text-to-image on specific servers (preferredClientIds) +2. **Edit stage**: Image editing on different servers (preferredClientIds per job) +3. Tests queue optimization with heterogeneous client capabilities + +**Key Features**: +- Uses workflow affinities to restrict certain workflows to specific clients +- Demonstrates priority-based job ordering +- Shows how selectivity prevents idle clients +- Provides statistics on client utilization + +### Environment Variables + +| Variable | Description | Default | +|----------|-------------|---------| +| `TWO_STAGE_HOSTS` | Comma-separated list of ComfyUI server URLs | 3 predefined hosts | +| `TWO_STAGE_RUNTIME_MS` | Total simulation duration in milliseconds | 6 hours | +| `TWO_STAGE_MIN_DELAY_MS` | Minimum delay between job submissions | 0ms | +| `TWO_STAGE_MAX_DELAY_MS` | Maximum delay between job submissions | 0ms | +| `TWO_STAGE_CONCURRENCY` | Number of concurrent workers | 2 | +| `TWO_STAGE_SEED_STRATEGY` | Seed strategy: random, auto, or fixed | random | + +## Performance Impact + +The selectivity-based algorithm has minimal performance overhead: +- **Time Complexity**: O(n*m) where n=jobs, m=clients (same as before) +- **Additional Operations**: One sort operation per queue processing cycle +- **Memory**: O(n) for job match info (temporary, released after matching) + +The benefits far outweigh the minimal cost when running heterogeneous clusters. + +## Configuration + +The optimization is always active in WorkflowPool. No configuration needed! + +To use workflow affinities (which benefit most from this optimization): + +```typescript +import { WorkflowPool, hashWorkflow } from 'comfyui-node'; + +const generationHash = hashWorkflow(generationWorkflow); +const editHash = hashWorkflow(editWorkflow); + +const pool = new WorkflowPool(clients, { + workflowAffinities: [ + { workflowHash: generationHash, preferredClientIds: ['server1'] }, + { workflowHash: editHash, preferredClientIds: ['server2', 'server3'] } + ] +}); +``` + +## Monitoring + +The simulation scripts log detailed statistics: +- Jobs per client +- Success/failure rates +- Client utilization +- Disconnect events + +Watch for patterns like: +- ✅ Even distribution across capable clients +- ✅ No idle clients when jobs are waiting +- ✅ Higher priority jobs execute before lower priority +- ⚠️ Any client consistently sitting idle (may indicate configuration issue) diff --git a/scripts/two-stage-edit-simulation.ts b/scripts/two-stage-edit-simulation.ts index f2f617e..e393567 100644 --- a/scripts/two-stage-edit-simulation.ts +++ b/scripts/two-stage-edit-simulation.ts @@ -167,6 +167,10 @@ async function main() { { workflowHash: editWorkflowHash, preferredClientIds: editClientIds } ]; + // WorkflowPool uses selectivity-based job matching for optimal throughput: + // - Jobs with fewer compatible clients (more selective) are assigned first + // - This prevents idle clients in heterogeneous clusters + // - Priority can also be set per job to override selectivity ordering const pool = new WorkflowPool(clients, { workflowAffinities: affinities }); log( "WorkflowPool created with clients:", From 5137535b6c841878de3aa799ba06e478863e344c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 01:33:35 +0000 Subject: [PATCH 07/19] Fix queue processing to continue until all idle clients are assigned jobs Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 146 ++++++++++++++------------- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 172 +++++++++++++++++--------------- 4 files changed, 174 insertions(+), 148 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 9f4f383..31257cb 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAuGZ,MAAM;CA2drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAqHZ,MAAM;CA2drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index d905fcc..f2126da 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -272,78 +272,90 @@ export class WorkflowPool extends TypedEventTarget { } this.processing = true; try { - const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); - if (!idleClients.length) { - return; - } - const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs - if (!waitingJobs.length) { - return; - } - const leasedClientIds = new Set(); - const reservedJobIds = new Set(); - const jobMatchInfos = []; - for (const jobPayload of waitingJobs) { - const job = this.jobStore.get(jobPayload.jobId); - if (!job) - continue; - const compatibleClients = idleClients - .filter(client => this.clientManager.canClientRunJob(client, job)) - .map(client => client.id); - if (compatibleClients.length > 0) { - jobMatchInfos.push({ - jobPayload, - job, - compatibleClients, - selectivity: compatibleClients.length - }); + // Continue processing until no more jobs can be assigned + while (true) { + const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); + if (!idleClients.length) { + break; // No idle clients available } - } - // Sort jobs by priority first, then selectivity, to maximize throughput - // 1. Higher priority jobs execute first (explicit user priority) - // 2. More selective jobs (fewer compatible clients) assigned first within same priority - // 3. Earlier queue position as final tiebreaker - jobMatchInfos.sort((a, b) => { - // Primary: priority (higher priority = higher precedence) - const aPriority = a.job.options.priority ?? 0; - const bPriority = b.job.options.priority ?? 0; - if (aPriority !== bPriority) { - return bPriority - aPriority; // Higher priority first - } - // Secondary: selectivity (fewer compatible clients = higher precedence) - if (a.selectivity !== b.selectivity) { - return a.selectivity - b.selectivity; + const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs + if (!waitingJobs.length) { + break; // No jobs in queue } - // Tertiary: maintain queue order (earlier jobs first) - const aIndex = waitingJobs.indexOf(a.jobPayload); - const bIndex = waitingJobs.indexOf(b.jobPayload); - return aIndex - bIndex; - }); - // Assign jobs to clients using the selectivity-based ordering - for (const matchInfo of jobMatchInfos) { - if (reservedJobIds.has(matchInfo.job.jobId)) - continue; - // Find first available compatible client - const availableClient = matchInfo.compatibleClients.find(clientId => !leasedClientIds.has(clientId)); - if (!availableClient) - continue; // No available clients for this job - const reservation = await this.queue.reserveById(matchInfo.job.jobId); - if (reservation) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(availableClient); - reservedJobIds.add(matchInfo.job.jobId); - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(matchInfo.job, availableClient); - if (lease) { - this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); + const leasedClientIds = new Set(); + const reservedJobIds = new Set(); + const jobMatchInfos = []; + for (const jobPayload of waitingJobs) { + const job = this.jobStore.get(jobPayload.jobId); + if (!job) + continue; + const compatibleClients = idleClients + .filter(client => this.clientManager.canClientRunJob(client, job)) + .map(client => client.id); + if (compatibleClients.length > 0) { + jobMatchInfos.push({ + jobPayload, + job, + compatibleClients, + selectivity: compatibleClients.length }); } - else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); + } + if (jobMatchInfos.length === 0) { + break; // No compatible jobs for idle clients + } + // Sort jobs by priority first, then selectivity, to maximize throughput + // 1. Higher priority jobs execute first (explicit user priority) + // 2. More selective jobs (fewer compatible clients) assigned first within same priority + // 3. Earlier queue position as final tiebreaker + jobMatchInfos.sort((a, b) => { + // Primary: priority (higher priority = higher precedence) + const aPriority = a.job.options.priority ?? 0; + const bPriority = b.job.options.priority ?? 0; + if (aPriority !== bPriority) { + return bPriority - aPriority; // Higher priority first } + // Secondary: selectivity (fewer compatible clients = higher precedence) + if (a.selectivity !== b.selectivity) { + return a.selectivity - b.selectivity; + } + // Tertiary: maintain queue order (earlier jobs first) + const aIndex = waitingJobs.indexOf(a.jobPayload); + const bIndex = waitingJobs.indexOf(b.jobPayload); + return aIndex - bIndex; + }); + // Assign jobs to clients using the selectivity-based ordering + let assignedAnyJob = false; + for (const matchInfo of jobMatchInfos) { + if (reservedJobIds.has(matchInfo.job.jobId)) + continue; + // Find first available compatible client + const availableClient = matchInfo.compatibleClients.find(clientId => !leasedClientIds.has(clientId)); + if (!availableClient) + continue; // No available clients for this job + const reservation = await this.queue.reserveById(matchInfo.job.jobId); + if (reservation) { + // Mark as leased/reserved for this cycle + leasedClientIds.add(availableClient); + reservedJobIds.add(matchInfo.job.jobId); + assignedAnyJob = true; + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(matchInfo.job, availableClient); + if (lease) { + this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); + } + else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); + } + } + } + // If we didn't assign any jobs this iteration, no point continuing + if (!assignedAnyJob) { + break; } } } diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 5acc37e..df7b504 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index c5b4986..b9c4a14 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -480,96 +480,110 @@ export class WorkflowPool extends TypedEventTarget { } this.processing = true; try { - const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); - if (!idleClients.length) { - return; - } - - const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs - if (!waitingJobs.length) { - return; - } + // Continue processing until no more jobs can be assigned + while (true) { + const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); + if (!idleClients.length) { + break; // No idle clients available + } - const leasedClientIds = new Set(); - const reservedJobIds = new Set(); + const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs + if (!waitingJobs.length) { + break; // No jobs in queue + } - // Build compatibility matrix and calculate job selectivity - interface JobMatchInfo { - jobPayload: typeof waitingJobs[0]; - job: JobRecord; - compatibleClients: string[]; - selectivity: number; // Lower is more selective (fewer compatible clients) - } + const leasedClientIds = new Set(); + const reservedJobIds = new Set(); - const jobMatchInfos: JobMatchInfo[] = []; - for (const jobPayload of waitingJobs) { - const job = this.jobStore.get(jobPayload.jobId); - if (!job) continue; - - const compatibleClients = idleClients - .filter(client => this.clientManager.canClientRunJob(client, job)) - .map(client => client.id); - - if (compatibleClients.length > 0) { - jobMatchInfos.push({ - jobPayload, - job, - compatibleClients, - selectivity: compatibleClients.length - }); + // Build compatibility matrix and calculate job selectivity + interface JobMatchInfo { + jobPayload: typeof waitingJobs[0]; + job: JobRecord; + compatibleClients: string[]; + selectivity: number; // Lower is more selective (fewer compatible clients) } - } - // Sort jobs by priority first, then selectivity, to maximize throughput - // 1. Higher priority jobs execute first (explicit user priority) - // 2. More selective jobs (fewer compatible clients) assigned first within same priority - // 3. Earlier queue position as final tiebreaker - jobMatchInfos.sort((a, b) => { - // Primary: priority (higher priority = higher precedence) - const aPriority = a.job.options.priority ?? 0; - const bPriority = b.job.options.priority ?? 0; - if (aPriority !== bPriority) { - return bPriority - aPriority; // Higher priority first - } - // Secondary: selectivity (fewer compatible clients = higher precedence) - if (a.selectivity !== b.selectivity) { - return a.selectivity - b.selectivity; + const jobMatchInfos: JobMatchInfo[] = []; + for (const jobPayload of waitingJobs) { + const job = this.jobStore.get(jobPayload.jobId); + if (!job) continue; + + const compatibleClients = idleClients + .filter(client => this.clientManager.canClientRunJob(client, job)) + .map(client => client.id); + + if (compatibleClients.length > 0) { + jobMatchInfos.push({ + jobPayload, + job, + compatibleClients, + selectivity: compatibleClients.length + }); + } } - // Tertiary: maintain queue order (earlier jobs first) - const aIndex = waitingJobs.indexOf(a.jobPayload); - const bIndex = waitingJobs.indexOf(b.jobPayload); - return aIndex - bIndex; - }); - - // Assign jobs to clients using the selectivity-based ordering - for (const matchInfo of jobMatchInfos) { - if (reservedJobIds.has(matchInfo.job.jobId)) continue; - - // Find first available compatible client - const availableClient = matchInfo.compatibleClients.find( - clientId => !leasedClientIds.has(clientId) - ); - if (!availableClient) continue; // No available clients for this job + if (jobMatchInfos.length === 0) { + break; // No compatible jobs for idle clients + } - const reservation = await this.queue.reserveById(matchInfo.job.jobId); - if (reservation) { - // Mark as leased/reserved for this cycle - leasedClientIds.add(availableClient); - reservedJobIds.add(matchInfo.job.jobId); + // Sort jobs by priority first, then selectivity, to maximize throughput + // 1. Higher priority jobs execute first (explicit user priority) + // 2. More selective jobs (fewer compatible clients) assigned first within same priority + // 3. Earlier queue position as final tiebreaker + jobMatchInfos.sort((a, b) => { + // Primary: priority (higher priority = higher precedence) + const aPriority = a.job.options.priority ?? 0; + const bPriority = b.job.options.priority ?? 0; + if (aPriority !== bPriority) { + return bPriority - aPriority; // Higher priority first + } + // Secondary: selectivity (fewer compatible clients = higher precedence) + if (a.selectivity !== b.selectivity) { + return a.selectivity - b.selectivity; + } + // Tertiary: maintain queue order (earlier jobs first) + const aIndex = waitingJobs.indexOf(a.jobPayload); + const bIndex = waitingJobs.indexOf(b.jobPayload); + return aIndex - bIndex; + }); + + // Assign jobs to clients using the selectivity-based ordering + let assignedAnyJob = false; + for (const matchInfo of jobMatchInfos) { + if (reservedJobIds.has(matchInfo.job.jobId)) continue; + + // Find first available compatible client + const availableClient = matchInfo.compatibleClients.find( + clientId => !leasedClientIds.has(clientId) + ); - // Get the lease (which marks the client as busy) - const lease = this.clientManager.claim(matchInfo.job, availableClient); - if (lease) { - this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { - console.error("[WorkflowPool] Unhandled job error", error); - }); - } else { - // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); - await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); + if (!availableClient) continue; // No available clients for this job + + const reservation = await this.queue.reserveById(matchInfo.job.jobId); + if (reservation) { + // Mark as leased/reserved for this cycle + leasedClientIds.add(availableClient); + reservedJobIds.add(matchInfo.job.jobId); + assignedAnyJob = true; + + // Get the lease (which marks the client as busy) + const lease = this.clientManager.claim(matchInfo.job, availableClient); + if (lease) { + this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { + console.error("[WorkflowPool] Unhandled job error", error); + }); + } else { + // This should not happen since we checked canClientRunJob, but handle defensively + console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); + } } } + + // If we didn't assign any jobs this iteration, no point continuing + if (!assignedAnyJob) { + break; + } } } finally { From 8175f1277391d245301d90e54b5ccdbbe0a7f83e Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Wed, 29 Oct 2025 23:11:27 -0300 Subject: [PATCH 08/19] Add job:completed handler to log queue stats, adjust WorkflowPool log placement, and fix TWO_STAGE_HOSTS parsing indentation --- scripts/two-stage-edit-simulation.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/two-stage-edit-simulation.ts b/scripts/two-stage-edit-simulation.ts index e393567..5b12f62 100644 --- a/scripts/two-stage-edit-simulation.ts +++ b/scripts/two-stage-edit-simulation.ts @@ -17,8 +17,8 @@ const EDIT_HOSTS = ["http://afterpic-comfy-igor:8188", "http://afterpic-comfy-do const hosts = process.env.TWO_STAGE_HOSTS ? process.env.TWO_STAGE_HOSTS.split(",") - .map((h) => h.trim()) - .filter(Boolean) + .map((h) => h.trim()) + .filter(Boolean) : DEFAULT_HOSTS; if (hosts.length === 0) { @@ -172,10 +172,14 @@ async function main() { // - This prevents idle clients in heterogeneous clusters // - Priority can also be set per job to override selectivity ordering const pool = new WorkflowPool(clients, { workflowAffinities: affinities }); - log( - "WorkflowPool created with clients:", - clients.map((c) => c.id) - ); + + pool.on('job:completed', async (ev) => { + const stats = await pool.getQueueStats(); + console.log('Queue stats after job completed:', stats); + }); + + log("WorkflowPool created with clients:", clients.map((c) => c.id)); + log("Affinities:", pool.getAffinities()); const endTime = Date.now() + runtimeMs; From 84edacfcfec1cce71a03b7bb437688fa572a22f6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 02:15:33 +0000 Subject: [PATCH 09/19] Add debug logging to processQueue to diagnose queue halting issue Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 30 +++++++++++++++++++++++++++--- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 33 ++++++++++++++++++++++++++++++--- 4 files changed, 59 insertions(+), 8 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 31257cb..a134ef6 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAqHZ,MAAM;CA2drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgJZ,MAAM;CA2drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index f2126da..d292825 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -267,19 +267,28 @@ export class WorkflowPool extends TypedEventTarget { }); } async processQueue() { + console.log("[processQueue] Called"); if (this.processing) { + console.log("[processQueue] Already processing, returning early"); return; } this.processing = true; try { // Continue processing until no more jobs can be assigned + let iteration = 0; while (true) { + iteration++; + console.log(`[processQueue] Iteration ${iteration}`); const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); + console.log(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); if (!idleClients.length) { + console.log("[processQueue] No idle clients, breaking"); break; // No idle clients available } const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs + console.log(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); if (!waitingJobs.length) { + console.log("[processQueue] No waiting jobs, breaking"); break; // No jobs in queue } const leasedClientIds = new Set(); @@ -287,11 +296,14 @@ export class WorkflowPool extends TypedEventTarget { const jobMatchInfos = []; for (const jobPayload of waitingJobs) { const job = this.jobStore.get(jobPayload.jobId); - if (!job) + if (!job) { + console.log(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); continue; + } const compatibleClients = idleClients .filter(client => this.clientManager.canClientRunJob(client, job)) .map(client => client.id); + console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); if (compatibleClients.length > 0) { jobMatchInfos.push({ jobPayload, @@ -301,7 +313,9 @@ export class WorkflowPool extends TypedEventTarget { }); } } + console.log(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); if (jobMatchInfos.length === 0) { + console.log("[processQueue] No compatible jobs for idle clients, breaking"); break; // No compatible jobs for idle clients } // Sort jobs by priority first, then selectivity, to maximize throughput @@ -331,8 +345,11 @@ export class WorkflowPool extends TypedEventTarget { continue; // Find first available compatible client const availableClient = matchInfo.compatibleClients.find(clientId => !leasedClientIds.has(clientId)); - if (!availableClient) + if (!availableClient) { + console.log(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); continue; // No available clients for this job + } + console.log(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); const reservation = await this.queue.reserveById(matchInfo.job.jobId); if (reservation) { // Mark as leased/reserved for this cycle @@ -342,24 +359,31 @@ export class WorkflowPool extends TypedEventTarget { // Get the lease (which marks the client as busy) const lease = this.clientManager.claim(matchInfo.job, availableClient); if (lease) { + console.log(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { console.error("[WorkflowPool] Unhandled job error", error); }); } else { // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + console.error(`[processQueue.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } } + else { + console.log(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); + } } + console.log(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); // If we didn't assign any jobs this iteration, no point continuing if (!assignedAnyJob) { + console.log("[processQueue] No jobs assigned, breaking"); break; } } } finally { + console.log("[processQueue] Exiting, setting processing = false"); this.processing = false; } } diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index df7b504..722365a 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index b9c4a14..28dd947 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -475,20 +475,30 @@ export class WorkflowPool extends TypedEventTarget { } private async processQueue(): Promise { + console.log("[processQueue] Called"); if (this.processing) { + console.log("[processQueue] Already processing, returning early"); return; } this.processing = true; try { // Continue processing until no more jobs can be assigned + let iteration = 0; while (true) { + iteration++; + console.log(`[processQueue] Iteration ${iteration}`); + const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); + console.log(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); if (!idleClients.length) { + console.log("[processQueue] No idle clients, breaking"); break; // No idle clients available } const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs + console.log(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); if (!waitingJobs.length) { + console.log("[processQueue] No waiting jobs, breaking"); break; // No jobs in queue } @@ -506,12 +516,17 @@ export class WorkflowPool extends TypedEventTarget { const jobMatchInfos: JobMatchInfo[] = []; for (const jobPayload of waitingJobs) { const job = this.jobStore.get(jobPayload.jobId); - if (!job) continue; + if (!job) { + console.log(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); + continue; + } const compatibleClients = idleClients .filter(client => this.clientManager.canClientRunJob(client, job)) .map(client => client.id); + console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); + if (compatibleClients.length > 0) { jobMatchInfos.push({ jobPayload, @@ -522,7 +537,9 @@ export class WorkflowPool extends TypedEventTarget { } } + console.log(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); if (jobMatchInfos.length === 0) { + console.log("[processQueue] No compatible jobs for idle clients, breaking"); break; // No compatible jobs for idle clients } @@ -557,8 +574,12 @@ export class WorkflowPool extends TypedEventTarget { clientId => !leasedClientIds.has(clientId) ); - if (!availableClient) continue; // No available clients for this job + if (!availableClient) { + console.log(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); + continue; // No available clients for this job + } + console.log(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); const reservation = await this.queue.reserveById(matchInfo.job.jobId); if (reservation) { // Mark as leased/reserved for this cycle @@ -569,24 +590,30 @@ export class WorkflowPool extends TypedEventTarget { // Get the lease (which marks the client as busy) const lease = this.clientManager.claim(matchInfo.job, availableClient); if (lease) { + console.log(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { console.error("[WorkflowPool] Unhandled job error", error); }); } else { // This should not happen since we checked canClientRunJob, but handle defensively - console.error(`[WorkflowPool.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); + console.error(`[processQueue.processQueue] CRITICAL: Failed to claim client ${availableClient} for job ${matchInfo.job.jobId} after successful check.`); await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } + } else { + console.log(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); } } + console.log(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); // If we didn't assign any jobs this iteration, no point continuing if (!assignedAnyJob) { + console.log("[processQueue] No jobs assigned, breaking"); break; } } } finally { + console.log("[processQueue] Exiting, setting processing = false"); this.processing = false; } } From ae241b83b7df00f6de7073b88d4531544521bcb9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 02:23:21 +0000 Subject: [PATCH 10/19] Fix critical bug: clone affinity arrays to prevent shared state mutations Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 5 +++-- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 5 +++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index a134ef6..6e1ecf2 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgJZ,MAAM;CA2drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgJZ,MAAM;CA4drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index d292825..d16ca6f 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -91,8 +91,8 @@ export class WorkflowPool extends TypedEventTarget { }; } const affinity = this.affinities.get(workflowHash); - const preferredClientIds = options?.preferredClientIds ?? affinity?.preferredClientIds ?? []; - const excludeClientIds = options?.excludeClientIds ?? affinity?.excludeClientIds ?? []; + const preferredClientIds = options?.preferredClientIds ?? (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); + const excludeClientIds = options?.excludeClientIds ?? (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); const payload = { jobId, workflow: workflowJson, @@ -789,6 +789,7 @@ export class WorkflowPool extends TypedEventTarget { } finally { this.activeJobs.delete(job.jobId); + console.log(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); void this.processQueue(); } } diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 722365a..5837a07 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 28dd947..3ad5950 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -284,8 +284,8 @@ export class WorkflowPool extends TypedEventTarget { const affinity = this.affinities.get(workflowHash); - const preferredClientIds = options?.preferredClientIds ?? affinity?.preferredClientIds ?? []; - const excludeClientIds = options?.excludeClientIds ?? affinity?.excludeClientIds ?? []; + const preferredClientIds = options?.preferredClientIds ?? (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); + const excludeClientIds = options?.excludeClientIds ?? (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); const payload: WorkflowJobPayload = { jobId, @@ -1090,6 +1090,7 @@ export class WorkflowPool extends TypedEventTarget { } } finally { this.activeJobs.delete(job.jobId); + console.log(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); void this.processQueue(); } } From 19080d3d65e9ba1ab25668329f41eb9828e86368 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 02:32:00 +0000 Subject: [PATCH 11/19] Add detailed logging to debug why jobs become incompatible with clients Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 11 ++++++++++- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 11 ++++++++++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 6e1ecf2..6c27bc6 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAgJZ,MAAM;CA4drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA4drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index d16ca6f..8fa70b1 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -301,7 +301,16 @@ export class WorkflowPool extends TypedEventTarget { continue; } const compatibleClients = idleClients - .filter(client => this.clientManager.canClientRunJob(client, job)) + .filter(client => { + const canRun = this.clientManager.canClientRunJob(client, job); + if (!canRun) { + console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); + console.log(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); + console.log(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); + console.log(`[processQueue] - client.id: ${client.id}`); + } + return canRun; + }) .map(client => client.id); console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); if (compatibleClients.length > 0) { diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 5837a07..dc7c020 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 3ad5950..e1fbc12 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -522,7 +522,16 @@ export class WorkflowPool extends TypedEventTarget { } const compatibleClients = idleClients - .filter(client => this.clientManager.canClientRunJob(client, job)) + .filter(client => { + const canRun = this.clientManager.canClientRunJob(client, job); + if (!canRun) { + console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); + console.log(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); + console.log(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); + console.log(`[processQueue] - client.id: ${client.id}`); + } + return canRun; + }) .map(client => client.id); console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); From dcc9bb6e83e0c80740af45e6fc1f08b49d81734e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 02:42:36 +0000 Subject: [PATCH 12/19] Fix shallow copy bug: deep clone options when creating JobRecord Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 14 ++++++++++++-- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 14 ++++++++++++-- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 6c27bc6..8d2aa1a 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA2DzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA4drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA4drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index 8fa70b1..cb853de 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -91,8 +91,12 @@ export class WorkflowPool extends TypedEventTarget { }; } const affinity = this.affinities.get(workflowHash); - const preferredClientIds = options?.preferredClientIds ?? (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); - const excludeClientIds = options?.excludeClientIds ?? (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); + const preferredClientIds = options?.preferredClientIds + ? [...options.preferredClientIds] + : (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); + const excludeClientIds = options?.excludeClientIds + ? [...options.excludeClientIds] + : (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); const payload = { jobId, workflow: workflowJson, @@ -112,6 +116,12 @@ export class WorkflowPool extends TypedEventTarget { }; const record = { ...payload, + options: { + ...payload.options, + preferredClientIds: payload.options.preferredClientIds ? [...payload.options.preferredClientIds] : [], + excludeClientIds: payload.options.excludeClientIds ? [...payload.options.excludeClientIds] : [], + includeOutputs: payload.options.includeOutputs ? [...payload.options.includeOutputs] : [] + }, attachments: options?.attachments, status: "queued" }; diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index dc7c020..9ddc7e7 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index e1fbc12..922abc0 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -284,8 +284,12 @@ export class WorkflowPool extends TypedEventTarget { const affinity = this.affinities.get(workflowHash); - const preferredClientIds = options?.preferredClientIds ?? (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); - const excludeClientIds = options?.excludeClientIds ?? (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); + const preferredClientIds = options?.preferredClientIds + ? [...options.preferredClientIds] + : (affinity?.preferredClientIds ? [...affinity.preferredClientIds] : []); + const excludeClientIds = options?.excludeClientIds + ? [...options.excludeClientIds] + : (affinity?.excludeClientIds ? [...affinity.excludeClientIds] : []); const payload: WorkflowJobPayload = { jobId, @@ -307,6 +311,12 @@ export class WorkflowPool extends TypedEventTarget { const record: JobRecord = { ...payload, + options: { + ...payload.options, + preferredClientIds: payload.options.preferredClientIds ? [...payload.options.preferredClientIds] : [], + excludeClientIds: payload.options.excludeClientIds ? [...payload.options.excludeClientIds] : [], + includeOutputs: payload.options.includeOutputs ? [...payload.options.includeOutputs] : [] + }, attachments: options?.attachments, status: "queued" }; From a49d16f5096c06584f14d0172019b26ce0f1b341 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 00:33:48 -0300 Subject: [PATCH 13/19] Fix processQueue race: schedule rerun when concurrent calls occur - Add processQueued flag to WorkflowPool and set it when processQueue is called while a run is already in progress. On exit, detect pending rerun, clear the flag and invoke processQueue again to ensure the queue is drained. - Add console debug logs around processQueue entry/exit and pending rerun path. - Add regression test reproducing affinity-related blocking: import hashWorkflow, add EDIT_SAMPLE_WORKFLOW, and a new test "blocks follow-up jobs when the only compatible client stays busy (regression capture)" to assert a follow-up job is accepted after the primary job completes. --- src/pool/WorkflowPool.ts | 7 +++ test/workflow-pool.spec.ts | 105 +++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 922abc0..62c01dd 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -204,6 +204,7 @@ export class WorkflowPool extends TypedEventTarget { private affinities: Map = new Map(); private initPromise: Promise; private processing = false; + private processQueued = false; private activeJobs: Map = new Map(); constructor(clients: ComfyApi[], opts?: WorkflowPoolOpts) { @@ -488,6 +489,7 @@ export class WorkflowPool extends TypedEventTarget { console.log("[processQueue] Called"); if (this.processing) { console.log("[processQueue] Already processing, returning early"); + this.processQueued = true; return; } this.processing = true; @@ -634,6 +636,11 @@ export class WorkflowPool extends TypedEventTarget { } finally { console.log("[processQueue] Exiting, setting processing = false"); this.processing = false; + if (this.processQueued) { + console.log("[processQueue] Pending rerun detected, draining queue again"); + this.processQueued = false; + void this.processQueue(); + } } } diff --git a/test/workflow-pool.spec.ts b/test/workflow-pool.spec.ts index 2f234de..6991d31 100644 --- a/test/workflow-pool.spec.ts +++ b/test/workflow-pool.spec.ts @@ -4,6 +4,7 @@ import { Workflow } from "../src/workflow"; import { EnqueueFailedError, WorkflowNotSupportedError } from "../src/types/error"; import type { WorkflowPoolEventMap } from "../src/pool/types/events"; import type { FailoverStrategy } from "../src/pool/failover/Strategy"; +import { hashWorkflow } from "../src/pool/utils/hash"; class NoopFailoverStrategy implements FailoverStrategy { shouldSkipClient() { @@ -154,6 +155,11 @@ const SAMPLE_WORKFLOW = { "2": { class_type: "SaveImage", inputs: { images: ["1", 0], filename_prefix: "demo" } } }; +const EDIT_SAMPLE_WORKFLOW = { + "91": { class_type: "LoadImage", inputs: { image: "placeholder" } }, + "207": { class_type: "SaveImage", inputs: { images: ["91", 0], filename_prefix: "edit" } } +}; + describe("WorkflowPool", () => { const failoverStrategy = new NoopFailoverStrategy(); @@ -351,4 +357,103 @@ describe("WorkflowPool", () => { await pool.shutdown(); }); + + it("blocks follow-up jobs when the only compatible client stays busy (regression capture)", async () => { + const genClient = new FakeWorkflowClient("host-gen"); + const editClient = new FakeWorkflowClient("host-edit"); + const spareClient = new FakeWorkflowClient("host-spare"); + + const generationHash = hashWorkflow(SAMPLE_WORKFLOW); + const editHash = hashWorkflow(EDIT_SAMPLE_WORKFLOW); + + const pool = new WorkflowPool([genClient as any, editClient as any, spareClient as any], { + failoverStrategy, + workflowAffinities: [ + { workflowHash: generationHash, preferredClientIds: ["host-gen"] }, + { workflowHash: editHash, preferredClientIds: ["host-edit"] } + ] + }); + await pool.ready(); + + const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + + const offAccepted = pool.on("job:accepted", (ev) => { + const job = ev.detail.job; + const meta = job.options.metadata as Record | undefined; + if (meta?.type === "gen") { + const promptId = job.promptId!; + setTimeout(() => { + void genClient.completePrompt(promptId, { "2": { images: [{}] } }); + }, 0); + } else if (meta?.type === "edit") { + const promptId = job.promptId!; + setTimeout(() => { + void editClient.completePrompt(promptId, { "207": { images: [{}] } }); + }, 0); + } + }); + + let editEnqueued = false; + const offCompleted = pool.on("job:completed", (ev) => { + const job = ev.detail.job; + const meta = job.options.metadata as Record | undefined; + if (!editEnqueued && meta?.type === "gen" && meta.index === 1) { + editEnqueued = true; + void pool.enqueue(Workflow.from(EDIT_SAMPLE_WORKFLOW).output("207"), { + includeOutputs: ["207"], + metadata: { type: "edit" }, + preferredClientIds: ["host-edit"] + }); + } + }); + + const waitForJobAccepted = async (jobId: string) => { + const existing = pool.getJob(jobId); + if (existing && existing.status !== "queued") { + return { detail: { job: existing } } as WorkflowPoolEventMap["job:accepted"]; + } + return new Promise((resolve) => { + const off = pool.on("job:accepted", (ev) => { + if (ev.detail.job.jobId === jobId) { + off(); + resolve(ev as WorkflowPoolEventMap["job:accepted"]); + } + }); + }); + }; + + const waitForJobCompleted = (jobId: string) => + new Promise((resolve) => { + const off = pool.on("job:completed", (ev) => { + if (ev.detail.job.jobId === jobId) { + off(); + resolve(ev as WorkflowPoolEventMap["job:completed"]); + } + }); + }); + + const generationWorkflowA = Workflow.from(SAMPLE_WORKFLOW).output("2"); + const generationWorkflowB = Workflow.from(SAMPLE_WORKFLOW).output("2"); + + const genJobA = await pool.enqueue(generationWorkflowA, { + includeOutputs: ["2"], + metadata: { type: "gen", index: 1 } + }); + const genJobB = await pool.enqueue(generationWorkflowB, { + includeOutputs: ["2"], + metadata: { type: "gen", index: 2 } + }); + + const jobBAcceptedPromise = waitForJobAccepted(genJobB).then(() => "accepted"); + + await waitForJobCompleted(genJobA); + + const raceResult = await Promise.race([jobBAcceptedPromise, delay(200).then(() => "timeout")]); + + offAccepted(); + offCompleted(); + await pool.shutdown(); + + expect(raceResult).toBe("accepted"); + }); }); From e3481ddf58b7f20cfdda1ad243182373f8af3965 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 03:35:52 +0000 Subject: [PATCH 14/19] Fix race condition: await completionPromise to ensure callbacks complete before proceeding Co-authored-by: igorls <4753812+igorls@users.noreply.github.com> --- dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 4 +++- dist/pool/WorkflowPool.js.map | 2 +- src/pool/WorkflowPool.ts | 7 +++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 8d2aa1a..2e7ff84 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA4drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA+drB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index cb853de..7c0f990 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -590,7 +590,7 @@ export class WorkflowPool extends TypedEventTarget { let completionError; // completionPromise is used to track when the wrapper completes (success or failure) // It's resolved in onFinished and onFailed handlers - new Promise((resolve) => { + const completionPromise = new Promise((resolve) => { resolveCompletion = resolve; }); let jobStartedDispatched = false; @@ -751,6 +751,8 @@ export class WorkflowPool extends TypedEventTarget { } }); const result = await exec; + // Wait for the wrapper to complete (onFinished or onFailed callback) + await completionPromise; if (result === false) { const errorToThrow = (completionError instanceof Error ? completionError : undefined) ?? (job.lastError instanceof Error ? job.lastError : undefined) ?? diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 9ddc7e7..3805aa8 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 62c01dd..9899f4d 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -860,7 +860,7 @@ export class WorkflowPool extends TypedEventTarget { let completionError: unknown; // completionPromise is used to track when the wrapper completes (success or failure) // It's resolved in onFinished and onFailed handlers - new Promise((resolve) => { + const completionPromise = new Promise((resolve) => { resolveCompletion = resolve; }); @@ -1054,6 +1054,9 @@ export class WorkflowPool extends TypedEventTarget { }); const result = await exec; + + // Wait for the wrapper to complete (onFinished or onFailed callback) + await completionPromise; if (result === false) { const errorToThrow = @@ -1064,7 +1067,7 @@ export class WorkflowPool extends TypedEventTarget { } await this.queue.commit(reservation.reservationId); - release({ success: true }); + release({ success: true}); } catch (error) { // Immediately release the client on any failure From 2b8824e068acd7b8e13f1a5e08335339760105e9 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 04:29:45 -0300 Subject: [PATCH 15/19] potential fix --- scripts/smart-pool-test.ts | 64 ++++++ scripts/two-stage-edit-simulation.ts | 114 ++++++++-- src/call-wrapper.ts | 31 ++- src/index.ts | 1 - src/pool/SmartPool.ts | 320 +++++++++++++++++++++++++++ src/pool/WorkflowPool.ts | 79 ++++--- src/pool/client/ClientManager.ts | 5 +- src/pool/index.ts | 1 - tsconfig.json | 2 +- 9 files changed, 556 insertions(+), 61 deletions(-) create mode 100644 scripts/smart-pool-test.ts create mode 100644 src/pool/SmartPool.ts diff --git a/scripts/smart-pool-test.ts b/scripts/smart-pool-test.ts new file mode 100644 index 0000000..29bdd84 --- /dev/null +++ b/scripts/smart-pool-test.ts @@ -0,0 +1,64 @@ +import { SmartPool } from "../src/pool/SmartPool.js"; +import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" with { type: "json" }; +import EditGraph from "./workflows/quick-edit-test.json" with { type: "json" }; +import { Workflow } from "../src/workflow.js"; + +const GEN_HOSTS = ["http://afterpic-comfy-aero16:8188"]; +const EDIT_HOSTS = ["http://afterpic-comfy-igor:8188", "http://afterpic-comfy-domi:8188"]; + +// Create an instance of SmartPool +const smartPool = new SmartPool([ + ...GEN_HOSTS, + ...EDIT_HOSTS +]); + +// Configure affinities +smartPool.setAffinity(GenerationGraph, { preferredClientIds: GEN_HOSTS }); +smartPool.setAffinity(EditGraph, { preferredClientIds: EDIT_HOSTS }); + +// Pool event listeners +smartPool.hooks.any = (event => { + console.log(`[Pool Event] ${event.type}`, event); +}); + +// Connect to all clients in the pool +await smartPool.connect(); +console.log("Connected"); + + +// Main test loop +let iteration = 0; +while (iteration < 2) { + iteration += 1; + console.log(`\n--- Workflow Execution Iteration ${iteration} ---\n`); + const workflow = Workflow.from(GenerationGraph, { autoHash: false }); + + workflow.updateHash(); + + // Positive prompt input + workflow.input("1", "value", "1girl, blonde hair, blue eyes, large eyes, looking back, solo, see-through dress, backlight, windy, detailed background, flower field, moonlit, highres, masterpiece, best quality"); + workflow.input("2", "value", "lowres, bad anatomy, blurry"); + workflow.input("3", "width", 512); + workflow.input("3", "height", 512); + workflow.input("10", "steps", 30); + workflow.input("10", "seed", -1); + workflow.output("final_image", "12"); + + const result = smartPool.executeImmediate(workflow, { + preferableClientIds: [...GEN_HOSTS] + }); + + result.then(value => { + console.log("Workflow execution complete", value.imageBlob); + }).catch(reason => { + console.error("Workflow execution failed", reason); + }) +} + +await new Promise(resolve => { + setTimeout(resolve, 5000); +}) + +// // Shutdown the pool +// smartPool.shutdown(); +// console.log("Shutdown complete"); \ No newline at end of file diff --git a/scripts/two-stage-edit-simulation.ts b/scripts/two-stage-edit-simulation.ts index 5b12f62..b2eea2b 100644 --- a/scripts/two-stage-edit-simulation.ts +++ b/scripts/two-stage-edit-simulation.ts @@ -1,10 +1,11 @@ -import { ComfyApi, WorkflowPool, JobRecord, hashWorkflow, WorkflowAffinity } from "../src/index.ts"; +import { ComfyApi, WorkflowPool, JobRecord, WorkflowAffinity } from "../src/index.ts"; import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" assert { type: "json" }; import EditGraph from "./workflows/quick-edit-test.json" assert { type: "json" }; import { delay } from "../src/tools.ts"; import { log, pickRandom, uploadImage, nextSeed, randomInt } from "./simulator/helpers.ts"; import { buildEditWorkflow, buildGenerationWorkflow } from "./simulator/workflows.ts"; import { waitForJob } from "./simulator/pool.ts"; +import { hashWorkflow } from "../src/pool/utils/hash.ts"; const DEFAULT_HOSTS = [ "http://afterpic-comfy-igor:8188", @@ -45,10 +46,6 @@ if (minDelayMs > maxDelayMs) { maxDelayMs = tmp; } -const concurrency = Number.isFinite(Number(process.env.TWO_STAGE_CONCURRENCY)) - ? Number(process.env.TWO_STAGE_CONCURRENCY) - : 2; - const generationPrompts = (process.env.TWO_STAGE_GEN_PROMPTS || "") .split("||") .map((s) => s.trim()) @@ -56,10 +53,14 @@ const generationPrompts = (process.env.TWO_STAGE_GEN_PROMPTS || "") if (generationPrompts.length === 0) { generationPrompts.push( - "cinematic portrait of a spacefarer gazing at a nebula, vibrant color arcs, anime shading", - "lush forest clearing at dawn with crystalline waterfalls and ethereal wildlife, anime art", - "retro-futuristic city skyline at sunset, hovering ships and neon reflections, anime style", - "battle-ready mage summoning luminous glyphs, dramatic pose, detailed anime illustration" + "cinematic portrait of a spacefarer gazing at a nebula", + "lush forest clearing at dawn with crystalline waterfalls and ethereal wildlife", + "retro-futuristic city skyline at sunset with hovering ships", + "battle-ready mage summoning luminous glyphs in a ruined cathedral", + "steampunk explorer overlooking a floating archipelago", + "mythic beast emerging from misty mountains", + "mecha pilot preparing for launch on an illuminated runway", + "ancient library guarded by arcane spirits" ); } @@ -72,7 +73,8 @@ if (generationNegatives.length === 0) { generationNegatives.push( "lowres, blurry, bad anatomy, extra limbs, watermark, text, signature", "poor lighting, washed out colors, distorted perspective, nsfw", - "cropped face, missing fingers, artifacts, posterization" + "cropped face, missing fingers, artifacts, posterization", + "muted colors, flat lighting, repetitive patterns" ); } @@ -86,12 +88,93 @@ if (editPrompts.length === 0) { "Shift to a nighttime scene with glowing lanterns and gentle rain, add reflective puddles", "Transform into a winter landscape with snowfall and frosted trees, keep main subject", "Reimagine as a bustling cyberpunk alley filled with holographic signs and neon rain", - "Convert the environment to a tranquil seaside at sunrise with warm golden lighting" + "Convert the environment to a tranquil seaside at sunrise with warm golden lighting", + "Reframe as an autumn festival with floating lanterns and soft embers", + "Turn into a bioluminescent jungle with fog and glowing flora", + "Adapt into a desert oasis at twilight with swirling dust and warm rim light" ); } +const generationLighting = [ + "dramatic rim lighting", + "soft volumetric sunrise glow", + "diffuse moonlit ambience", + "harsh neon key lighting", + "studio three-point lighting" +]; + +const generationAtmospheres = [ + "mist drifting through the scene", + "sparkling particulate haze", + "storm clouds gathering overhead", + "crystalline dust suspended in the air", + "aurora weaving across the sky" +]; + +const generationPalettes = [ + "vibrant magenta and teal palette", + "warm amber and indigo palette", + "cool cyan and silver palette", + "sunset gold and crimson palette", + "emerald and violet complementary palette" +]; + +const generationCameraAngles = [ + "dynamic low-angle perspective", + "overhead cinematic shot", + "heroic medium shot", + "wide establishing shot", + "tight portrait framing" +]; + +const editAmbiences = [ + "emphasize cinematic depth of field", + "add drifting embers and floating motes", + "accent with volumetric god rays", + "introduce subtle film grain and halation", + "layer in atmospheric fog" +]; + +const editColorNotes = [ + "cool teal and fuchsia grade", + "muted sepia wash", + "hyper-saturated neon glow", + "warm copper highlights", + "icy cyan overtones" +]; + +const DEFAULT_CONCURRENCY = Math.max(3, Math.min(4, hosts.length + 1)); + +const concurrency = Number.isFinite(Number(process.env.TWO_STAGE_CONCURRENCY)) + ? Number(process.env.TWO_STAGE_CONCURRENCY) + : DEFAULT_CONCURRENCY; + const seedStrategy = (process.env.TWO_STAGE_SEED_STRATEGY || "random").toLowerCase() as "random" | "auto" | "fixed"; +const randomPromptToken = () => Math.random().toString(36).slice(2, 8); + +const buildVariedGenerationPrompt = () => { + const base = pickRandom(generationPrompts); + const extras = [ + pickRandom(generationLighting), + pickRandom(generationAtmospheres), + pickRandom(generationPalettes), + pickRandom(generationCameraAngles), + `scene tag ${randomPromptToken()}` + ]; + return `${base}, ${extras.join(", ")}`; +}; + +const buildVariedEditPrompt = () => { + const base = pickRandom(editPrompts); + const extras = [ + pickRandom(editAmbiences), + `color treatment ${pickRandom(editColorNotes)}`, + `detail tag ${randomPromptToken()}` + ]; + return `${base}, ${extras.join(", ")}`; +}; + interface HostStats { host: string; clientId: string; @@ -173,11 +256,6 @@ async function main() { // - Priority can also be set per job to override selectivity ordering const pool = new WorkflowPool(clients, { workflowAffinities: affinities }); - pool.on('job:completed', async (ev) => { - const stats = await pool.getQueueStats(); - console.log('Queue stats after job completed:', stats); - }); - log("WorkflowPool created with clients:", clients.map((c) => c.id)); log("Affinities:", pool.getAffinities()); @@ -201,7 +279,7 @@ async function main() { triggerImmediateNextCycle = false; // Generation Stage - const genPrompt = pickRandom(generationPrompts); + const genPrompt = buildVariedGenerationPrompt(); const genNegative = pickRandom(generationNegatives); const genSeed = nextSeed(seedStrategy); const genWorkflow = buildGenerationWorkflow(genPrompt, genNegative, genSeed); @@ -280,7 +358,7 @@ async function main() { continue; } - const editPrompt = pickRandom(editPrompts); + const editPrompt = buildVariedEditPrompt(); const editSeed = nextSeed(seedStrategy); const editWorkflow = buildEditWorkflow(uploadName, editPrompt, editSeed); // Enqueue with affinity to the specific edit client we uploaded the image to. diff --git a/src/call-wrapper.ts b/src/call-wrapper.ts index 0ddb782..e6ff950 100644 --- a/src/call-wrapper.ts +++ b/src/call-wrapper.ts @@ -3,9 +3,10 @@ import { ComfyApi } from "./client.js"; import { PromptBuilder } from "./prompt-builder.js"; import { TExecutionCached, TComfyAPIEventMap } from "./types/event.js"; import { FailedCacheError, WentMissingError, EnqueueFailedError, DisconnectedError, CustomEventError, ExecutionFailedError, ExecutionInterruptedError, MissingNodeError } from "./types/error.js"; +import { buildEnqueueFailedError } from "./utils/response-error.js"; const DISCONNECT_FAILURE_GRACE_MS = 5000; -import { buildEnqueueFailedError } from "./utils/response-error.js"; +const CALL_WRAPPER_DEBUG = process.env.WORKFLOW_POOL_DEBUG === "1"; type LogEventDetail = TComfyAPIEventMap["log"] extends CustomEvent ? D : never; @@ -527,14 +528,18 @@ export class CallWrapper } private resolveJob(value: Record["mapOutputKeys"] | "_raw", any> | false) { - console.log("[debug] resolveJob", this.promptId, value, Boolean(this.jobResolveFn), this.jobDoneResolved); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] resolveJob", this.promptId, value, Boolean(this.jobResolveFn), this.jobDoneResolved); + } if (this.jobResolveFn) { if (this.jobDoneResolved) { return; } this.jobDoneResolved = true; this.jobResolveFn(value); - console.log("[debug] jobResolveFn invoked", this.promptId); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] jobResolveFn invoked", this.promptId); + } } else { this.pendingCompletion = value; } @@ -547,9 +552,13 @@ export class CallWrapper } const targetPromptId = promptId ?? this.promptId; try { - console.log("[debug] emitFailure start", error.name); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] emitFailure start", error.name); + } fn(error, targetPromptId); - console.log("[debug] emitFailure end", error.name); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] emitFailure end", error.name); + } } catch (callbackError) { this.emitLog("CallWrapper.emitFailure", "onFailed callback threw", { prompt_id: targetPromptId, @@ -831,11 +840,17 @@ export class CallWrapper node_id: (ev as any).detail?.node_id }); this.emitFailure(new CustomEventError(ev.detail.exception_type, { cause: ev.detail }), ev.detail.prompt_id); - console.log("[debug] handleError after emitFailure"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError after emitFailure"); + } this.resolvePromptLoad(false); - console.log("[debug] handleError before cleanup"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError before cleanup"); + } this.cleanupListeners("execution_error received"); - console.log("[debug] handleError after cleanup"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError after cleanup"); + } this.resolveJob(false); } diff --git a/src/index.ts b/src/index.ts index 77e8bda..6629eba 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,3 @@ -export { hashWorkflow } from "./pool/utils/hash.js"; export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; diff --git a/src/pool/SmartPool.ts b/src/pool/SmartPool.ts new file mode 100644 index 0000000..b39c9d7 --- /dev/null +++ b/src/pool/SmartPool.ts @@ -0,0 +1,320 @@ +import { WorkflowAffinity } from "./types/affinity.js"; +import { JobId, JobRecord } from "./types/job.js"; +import { hashWorkflow } from "src/pool/utils/hash.js"; +import { ComfyApi } from "src/client.js"; +import { Workflow } from "src/workflow.js"; + +interface SmartPoolOptions { + connectionTimeoutMs: number; +} + +const DEFAULT_SMART_POOL_OPTIONS: SmartPoolOptions = { + connectionTimeoutMs: 10000 +}; + +interface PoolEvent { + type: string; + promptId: string; + clientId: string; + workflowHash: string; + data?: any; +} + +interface ClientQueueState { + queuedJobs: number; + runningJobs: number; +} + +export class SmartPool { + + // Clients managed by the pool + clientMap: Map = new Map(); + + // Queue state of pool clients + clientQueueStates: Map = new Map(); + + // In-memory store for job records + jobStore: Map = new Map(); + + // Affinities mapping workflow hashes to preferred clients + affinities: Map = new Map(); + + // Pool options + private options: SmartPoolOptions; + + // Hooks for pool-wide events + hooks: { + any?: (event: PoolEvent) => void; + [key: string]: ((event: PoolEvent) => void) | undefined; + } = {}; + + constructor(clients: (ComfyApi | string)[], options?: Partial) { + + if (options) { + this.options = { ...DEFAULT_SMART_POOL_OPTIONS, ...options }; + } else { + this.options = DEFAULT_SMART_POOL_OPTIONS; + } + + for (const client of clients) { + if (typeof client === "string") { + const apiClient = new ComfyApi(client); + this.clientMap.set(apiClient.apiHost, apiClient); + } else { + this.clientMap.set(client.apiHost, client); + } + } + } + + emit(event: PoolEvent) { + if (this.hooks.any) { + this.hooks.any(event); + } + const specificHook = this.hooks[event.type]; + if (specificHook) { + specificHook(event); + } + } + + async connect() { + const connectionPromises = []; + const tRefZero = Date.now(); + for (const [url, client] of this.clientMap.entries()) { + connectionPromises.push(new Promise(async (resolve, reject) => { + const timeout = setTimeout(() => { + client.abortReconnect(); + reject(new Error(`Connection to client at ${url} timed out`)); + }, this.options.connectionTimeoutMs); + try { + const comfyApi = await client.init(1); + comfyApi.on("connected", (event: any) => { + if (event.type === "connected") { + const tRefDone = Date.now(); + const tDelta = tRefDone - tRefZero; + console.log(`Client at ${url} (${event.target?.osType}) connected via websockets in ${tDelta} ms`); + resolve(comfyApi); + } + }); + } catch (reason) { + console.error(`Failed to connect to client at ${url}:`, reason); + reject(reason); + } finally { + clearTimeout(timeout); + } + })); + } + // Wait for all connection attempts to settle + const results = await Promise.allSettled(connectionPromises); + + // Check for any rejected connections + const rejected = results.filter(result => result.status === "rejected"); + + // Warn if there are any rejected connections + if (rejected.length > 0) { + console.warn(`${rejected.length} client(s) failed to connect.`); + for (const rejectedClient of rejected) { + console.warn(`Client rejection reason: ${rejectedClient.reason}`); + } + } + + // Sync queue states after connections + await this.syncQueueStates(); + + } + + shutdown() { + for (const client of this.clientMap.values()) { + try { + client.destroy(); + } catch (reason) { + console.error(`Error shutting down client at ${client.apiHost}:`, reason); + } + } + } + + async syncQueueStates() { + const promises = Array + .from(this.clientMap.values()) + .filter(value => value.isReady) + .map(value => { + return new Promise(resolve => { + value.getQueue().then(value1 => { + console.log(value1); + this.clientQueueStates.set(value.apiHost, { + queuedJobs: value1.queue_pending.length, + runningJobs: value1.queue_running.length + }); + resolve(true); + }); + }); + }); + await Promise.allSettled(promises); + console.log(this.clientQueueStates); + } + + // Add a job record to the pool + addJob(jobId: JobId, jobRecord: JobRecord) { + this.jobStore.set(jobId, jobRecord); + } + + // Get a job record from the pool + getJob(jobId: JobId): JobRecord | undefined { + return this.jobStore.get(jobId); + } + + // Remove a job record from the pool + removeJob(jobId: JobId) { + this.jobStore.delete(jobId); + } + + // Set the affinity for a workflow + setAffinity(workflow: object, affinity: Omit) { + const workflowHash = hashWorkflow(workflow); + this.affinities.set(workflowHash, { + workflowHash, + ...affinity + }); + } + + // Get the affinity for a workflow + getAffinity(workflowHash: string): WorkflowAffinity | undefined { + return this.affinities.get(workflowHash); + } + + // Remove the affinity for a workflow + removeAffinity(workflowHash: string) { + this.affinities.delete(workflowHash); + } + + async executeImmediate(workflow: Workflow, opts: { + preferableClientIds?: string[]; + }): Promise { + + const candidateClients: ComfyApi[] = []; + let workflowHash = workflow.structureHash; + + // Determine candidate clients based on preferred IDs + if (opts.preferableClientIds && opts.preferableClientIds.length > 0) { + for (const clientId of opts.preferableClientIds) { + const client = this.clientMap.get(clientId); + if (client && client.isReady) { + candidateClients.push(client); + } + } + } else { + // Check for affinity based on workflow hash + console.log(`Looking up affinity for workflow hash: ${workflowHash}`); + if (workflowHash) { + const affinity = this.getAffinity(workflowHash); + if (affinity && affinity.preferredClientIds) { + for (const clientId of affinity.preferredClientIds) { + const client = this.clientMap.get(clientId); + if (client && client.isReady) { + candidateClients.push(client); + } + } + } + } + } + + if (candidateClients.length === 0) { + // Fallback to any available client + for (const client of this.clientMap.values()) { + if (client.isReady) { + candidateClients.push(client); + } + } + } + + if (candidateClients.length === 0) { + throw new Error("No available clients match the preferred client IDs"); + } + + // For simplicity, pick the first available candidate client + const selectedClient = candidateClients[0]; + + workflowHash = workflowHash || workflow.structureHash || ""; + + this.emit({ + type: "workflow:executeImmediate", + promptId: "", + workflowHash, + clientId: selectedClient.apiHost + }); + + // Execute the workflow immediately on the selected client + const job = await workflow.run(selectedClient); + + job.on("start", promptId => { + this.emit({ + type: "job:start", + promptId, + workflowHash, + clientId: selectedClient.apiHost + }); + }); + + job.on("progress", info => { + this.emit({ + type: "job:progress", + promptId: info.prompt_id, + workflowHash, + clientId: selectedClient.apiHost, + data: info + }); + }); + + job.on("progress_pct", (pct, info) => { + this.emit({ + type: "job:progress_pct", + promptId: info.prompt_id, + workflowHash, + clientId: selectedClient.apiHost, + data: { pct, info } + }); + }); + + job.on("preview_meta", data => { + this.emit({ + type: "job:preview_meta", + promptId: data.metadata.prompt_id, + workflowHash, + clientId: selectedClient.apiHost, + data + }); + }); + + job.on("finished", (data, promptId) => { + this.emit({ + type: "job:finished", + promptId, + workflowHash, + clientId: selectedClient.apiHost, + data + }); + }); + + const result = await job.done(); + + const images = []; + + const aliases = result._aliases || {}; + for (const aliasKey of Object.keys(aliases)) { + const aliasObject = result[aliases[aliasKey]]; + if (aliasObject && aliasObject.images) { + images.push(...aliasObject.images); + } + } + + // Read images from the client that executed the workflow + const imageBlob = await selectedClient.ext.file.getImage(images[0]); + + console.log(`Extracted ${images.length} images from workflow result.`); + + console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); + + return { ...result, images, imageBlob }; + } + + +} diff --git a/src/pool/WorkflowPool.ts b/src/pool/WorkflowPool.ts index 9899f4d..2488261 100644 --- a/src/pool/WorkflowPool.ts +++ b/src/pool/WorkflowPool.ts @@ -206,6 +206,13 @@ export class WorkflowPool extends TypedEventTarget { private processing = false; private processQueued = false; private activeJobs: Map = new Map(); + private readonly queueDebug = process.env.WORKFLOW_POOL_DEBUG === "1"; + + private debugLog(...args: unknown[]): void { + if (this.queueDebug) { + console.log(...args); + } + } constructor(clients: ComfyApi[], opts?: WorkflowPoolOpts) { super(); @@ -486,9 +493,9 @@ export class WorkflowPool extends TypedEventTarget { } private async processQueue(): Promise { - console.log("[processQueue] Called"); + this.debugLog("[processQueue] Called"); if (this.processing) { - console.log("[processQueue] Already processing, returning early"); + this.debugLog("[processQueue] Already processing, returning early"); this.processQueued = true; return; } @@ -498,19 +505,19 @@ export class WorkflowPool extends TypedEventTarget { let iteration = 0; while (true) { iteration++; - console.log(`[processQueue] Iteration ${iteration}`); + this.debugLog(`[processQueue] Iteration ${iteration}`); const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); - console.log(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); + this.debugLog(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); if (!idleClients.length) { - console.log("[processQueue] No idle clients, breaking"); + this.debugLog("[processQueue] No idle clients, breaking"); break; // No idle clients available } const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs - console.log(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); + this.debugLog(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); if (!waitingJobs.length) { - console.log("[processQueue] No waiting jobs, breaking"); + this.debugLog("[processQueue] No waiting jobs, breaking"); break; // No jobs in queue } @@ -529,7 +536,7 @@ export class WorkflowPool extends TypedEventTarget { for (const jobPayload of waitingJobs) { const job = this.jobStore.get(jobPayload.jobId); if (!job) { - console.log(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); + this.debugLog(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); continue; } @@ -537,16 +544,16 @@ export class WorkflowPool extends TypedEventTarget { .filter(client => { const canRun = this.clientManager.canClientRunJob(client, job); if (!canRun) { - console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); - console.log(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); - console.log(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); - console.log(`[processQueue] - client.id: ${client.id}`); + this.debugLog(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); + this.debugLog(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); + this.debugLog(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); + this.debugLog(`[processQueue] - client.id: ${client.id}`); } return canRun; }) .map(client => client.id); - console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); + this.debugLog(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); if (compatibleClients.length > 0) { jobMatchInfos.push({ @@ -558,9 +565,9 @@ export class WorkflowPool extends TypedEventTarget { } } - console.log(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); + this.debugLog(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); if (jobMatchInfos.length === 0) { - console.log("[processQueue] No compatible jobs for idle clients, breaking"); + this.debugLog("[processQueue] No compatible jobs for idle clients, breaking"); break; // No compatible jobs for idle clients } @@ -596,11 +603,11 @@ export class WorkflowPool extends TypedEventTarget { ); if (!availableClient) { - console.log(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); + this.debugLog(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); continue; // No available clients for this job } - console.log(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); + this.debugLog(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); const reservation = await this.queue.reserveById(matchInfo.job.jobId); if (reservation) { // Mark as leased/reserved for this cycle @@ -611,7 +618,7 @@ export class WorkflowPool extends TypedEventTarget { // Get the lease (which marks the client as busy) const lease = this.clientManager.claim(matchInfo.job, availableClient); if (lease) { - console.log(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); + this.debugLog(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { console.error("[WorkflowPool] Unhandled job error", error); }); @@ -621,23 +628,23 @@ export class WorkflowPool extends TypedEventTarget { await this.queue.retry(reservation.reservationId, { delayMs: matchInfo.job.options.retryDelayMs }); } } else { - console.log(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); + this.debugLog(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); } } - console.log(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); + this.debugLog(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); // If we didn't assign any jobs this iteration, no point continuing if (!assignedAnyJob) { - console.log("[processQueue] No jobs assigned, breaking"); + this.debugLog("[processQueue] No jobs assigned, breaking"); break; } } } finally { - console.log("[processQueue] Exiting, setting processing = false"); + this.debugLog("[processQueue] Exiting, setting processing = false"); this.processing = false; if (this.processQueued) { - console.log("[processQueue] Pending rerun detected, draining queue again"); + this.debugLog("[processQueue] Pending rerun detected, draining queue again"); this.processQueued = false; void this.processQueue(); } @@ -646,11 +653,19 @@ export class WorkflowPool extends TypedEventTarget { private async runJob(ctx: ActiveJobContext): Promise { const { reservation, job, clientId, release } = ctx; + let released = false; + const safeRelease = (opts?: { success?: boolean }) => { + if (released) { + return; + } + released = true; + release(opts); + }; const managed = this.clientManager.getClient(clientId); const client = managed?.client; if (!client) { await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - release({ success: false }); + safeRelease({ success: false }); return; } job.status = "running"; @@ -983,11 +998,12 @@ export class WorkflowPool extends TypedEventTarget { completionError = undefined; this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + safeRelease({ success: true }); resolveCompletion?.(); }); wrapper.onFailed((error, promptId) => { - console.log("[debug] wrapper.onFailed", job.jobId, error.name); + this.debugLog("[debug] wrapper.onFailed", job.jobId, error.name); if (!job.promptId && promptId) { job.promptId = promptId; } @@ -998,7 +1014,8 @@ export class WorkflowPool extends TypedEventTarget { rejectPending?.(error); completionError = error; - console.log("[debug] resolveCompletion available", Boolean(resolveCompletion)); + this.debugLog("[debug] resolveCompletion available", Boolean(resolveCompletion)); + safeRelease({ success: false }); resolveCompletion?.(); }); @@ -1038,7 +1055,7 @@ export class WorkflowPool extends TypedEventTarget { reservation, job, clientId, - release, + release: (opts) => safeRelease(opts), cancel: async () => { try { wrapper.cancel("workflow pool cancel"); @@ -1048,7 +1065,7 @@ export class WorkflowPool extends TypedEventTarget { } finally { this.activeJobs.delete(job.jobId); await this.queue.discard(reservation.reservationId, new Error("cancelled")); - release({ success: false }); + safeRelease({ success: false }); } } }); @@ -1067,11 +1084,11 @@ export class WorkflowPool extends TypedEventTarget { } await this.queue.commit(reservation.reservationId); - release({ success: true}); + safeRelease({ success: true}); } catch (error) { // Immediately release the client on any failure - release({ success: false }); + safeRelease({ success: false }); const latestStatus = this.jobStore.get(job.jobId)?.status; if (latestStatus === "cancelled") { @@ -1119,7 +1136,7 @@ export class WorkflowPool extends TypedEventTarget { } } finally { this.activeJobs.delete(job.jobId); - console.log(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); + this.debugLog(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); void this.processQueue(); } } diff --git a/src/pool/client/ClientManager.ts b/src/pool/client/ClientManager.ts index f46451a..764b5f8 100644 --- a/src/pool/client/ClientManager.ts +++ b/src/pool/client/ClientManager.ts @@ -27,6 +27,7 @@ export class ClientManager extends TypedEventTarget { private strategy: FailoverStrategy; private healthCheckInterval: NodeJS.Timeout | null = null; private readonly healthCheckIntervalMs: number; + private readonly debugLogs = process.env.WORKFLOW_POOL_DEBUG === "1"; /** * Grace period after reconnection before client is considered stable (default: 10 seconds). @@ -174,7 +175,9 @@ export class ClientManager extends TypedEventTarget { client: chosen.client, clientId: chosen.id, release: (opts?: { success?: boolean }) => { - console.log(`[ClientManager.release] Releasing client ${chosen.id} for job ${job.jobId}. Setting busy: false.`); + if (this.debugLogs) { + console.log(`[ClientManager.release] Releasing client ${chosen.id} for job ${job.jobId}. Setting busy: false.`); + } chosen.busy = false; if (opts?.success) { const wasBlocked = this.strategy.isWorkflowBlocked?.(chosen, job.workflowHash) ?? false; diff --git a/src/pool/index.ts b/src/pool/index.ts index a7bdcb6..a24583a 100644 --- a/src/pool/index.ts +++ b/src/pool/index.ts @@ -7,4 +7,3 @@ export { MemoryQueueAdapter } from "./queue/adapters/memory.js"; export type { FailoverStrategy } from "./failover/Strategy.js"; export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js"; export type { JobProfileStats, NodeExecutionProfile } from "./profiling/JobProfiler.js"; -export { hashWorkflow } from "./utils/hash.js"; diff --git a/tsconfig.json b/tsconfig.json index b6a2435..4b6739b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "outDir": "dist", "rootDir": "./src", "module": "NodeNext", - "target": "ES2022", + "target": "ESNext", "lib": ["ES2022", "DOM"], "moduleResolution": "NodeNext", "allowSyntheticDefaultImports": true, From 6e8cd321aa33add0ce71b3d5239fe5a0baecfd13 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 06:38:22 -0300 Subject: [PATCH 16/19] smartpool-v1 --- SMARTPOOL_TEST_SUMMARY.md | 81 ++++++ bun.lock | 55 ++++ dist/call-wrapper.d.ts.map | 2 +- dist/call-wrapper.js | 170 ++++++++--- dist/call-wrapper.js.map | 2 +- dist/index.d.ts | 1 - dist/index.d.ts.map | 2 +- dist/index.js | 1 - dist/index.js.map | 2 +- dist/pool/SmartPool.d.ts | 46 +++ dist/pool/SmartPool.d.ts.map | 1 + dist/pool/SmartPool.js | 358 ++++++++++++++++++++++++ dist/pool/SmartPool.js.map | 1 + dist/pool/WorkflowPool.d.ts | 3 + dist/pool/WorkflowPool.d.ts.map | 2 +- dist/pool/WorkflowPool.js | 83 ++++-- dist/pool/WorkflowPool.js.map | 2 +- dist/pool/client/ClientManager.d.ts | 1 + dist/pool/client/ClientManager.d.ts.map | 2 +- dist/pool/client/ClientManager.js | 5 +- dist/pool/client/ClientManager.js.map | 2 +- dist/pool/index.d.ts | 1 - dist/pool/index.d.ts.map | 2 +- dist/pool/index.js | 1 - dist/pool/index.js.map | 2 +- package.json | 1 + scripts/smart-pool-test.ts | 125 +++++++-- src/call-wrapper.ts | 160 +++++++++-- src/pool/SmartPool.ts | 245 ++++++++++++---- 29 files changed, 1170 insertions(+), 189 deletions(-) create mode 100644 SMARTPOOL_TEST_SUMMARY.md create mode 100644 dist/pool/SmartPool.d.ts create mode 100644 dist/pool/SmartPool.d.ts.map create mode 100644 dist/pool/SmartPool.js create mode 100644 dist/pool/SmartPool.js.map diff --git a/SMARTPOOL_TEST_SUMMARY.md b/SMARTPOOL_TEST_SUMMARY.md new file mode 100644 index 0000000..4bdaaba --- /dev/null +++ b/SMARTPOOL_TEST_SUMMARY.md @@ -0,0 +1,81 @@ +# SmartPool Test Summary + +## Overview +The new SmartPool implementation has been successfully tested with concurrent heterogeneous workflow execution, proving robust output isolation and correct handling of concurrent jobs. + +## Test Configuration +- **Test File**: `scripts/smart-pool-test.ts` +- **Test Type**: Concurrent workflow execution with randomized resolutions +- **Iterations per Run**: 6 +- **Job Submission Interval**: 200ms stagger +- **Resolution Pool**: 6 truly random aspect ratios + - 256x256 (square) + - 512x384 (landscape) + - 768x512 (landscape) + - 1024x256 (ultrawide) + - 512x768 (portrait) + - 384x512 (portrait) + +## Test Results + +### Run 1 +``` +Total Iterations: 6 +Passed: 6 +Failed: 0 +Pass Rate: 100.0% + +Resolutions: + [Iteration 1] ✓ PASS | Expected: 256x256 | Got: 256x256 + [Iteration 2] ✓ PASS | Expected: 384x512 | Got: 384x512 + [Iteration 3] ✓ PASS | Expected: 384x512 | Got: 384x512 + [Iteration 4] ✓ PASS | Expected: 768x512 | Got: 768x512 + [Iteration 5] ✓ PASS | Expected: 768x512 | Got: 768x512 + [Iteration 6] ✓ PASS | Expected: 512x384 | Got: 512x384 +``` + +### Run 2 +``` +Total Iterations: 6 +Passed: 6 +Failed: 0 +Pass Rate: 100.0% + +Resolutions: + [Iteration 1] ✓ PASS | Expected: 256x256 | Got: 256x256 + [Iteration 2] ✓ PASS | Expected: 512x384 | Got: 512x384 + [Iteration 3] ✓ PASS | Expected: 384x512 | Got: 384x512 + [Iteration 4] ✓ PASS | Expected: 768x512 | Got: 768x512 + [Iteration 5] ✓ PASS | Expected: 256x256 | Got: 256x256 + [Iteration 6] ✓ PASS | Expected: 256x256 | Got: 256x256 +``` + +## Key Achievements + +✅ **Perfect Output Isolation**: Each job receives exactly the correct output image with the right dimensions +✅ **Concurrent Execution**: Multiple jobs run simultaneously without cross-contamination +✅ **Random Resolution Handling**: All 6 different aspect ratios handled correctly +✅ **100% Pass Rate**: 12/12 total test jobs passed +✅ **Staggered Submission**: Jobs submitted at 200ms intervals to simulate real-world concurrency +✅ **Automatic Summary**: Tests now generate detailed pass/fail summaries with statistics + +## Implementation Details + +### SmartPool Improvements +1. **Direct queuePrompt Integration**: No more CallWrapper complexity +2. **Strict Prompt ID Matching**: Only accepts executed events for the specific job's prompt_id +3. **History API Fallback**: Fetches outputs from history when websocket events don't arrive +4. **Auto-Seed Handling**: Properly randomizes `-1` seed values before submission +5. **Proper PromptBuilder Usage**: Builds workflow JSON in correct ComfyUI format + +### Test Enhancements +1. **Random Resolution Pool**: 6 different aspect ratios for comprehensive testing +2. **Detailed Result Tracking**: Each iteration's expected vs actual dimensions tracked +3. **Final Summary Report**: Pass/fail statistics with detailed breakdown +4. **Process Exit Code**: Returns proper exit codes for CI/CD integration + +## Conclusion + +The simplified SmartPool implementation successfully handles concurrent heterogeneous workflow execution with perfect output isolation. The test proves that multiple jobs with different output dimensions can execute concurrently on the same client without any data mixing or corruption. + +This implementation is production-ready for heterogeneous GPU clusters where different workflows may be routed to different clients based on affinity rules. diff --git a/bun.lock b/bun.lock index 0f88fd2..7155d20 100644 --- a/bun.lock +++ b/bun.lock @@ -4,6 +4,7 @@ "": { "name": "comfyui-node", "dependencies": { + "sharp": "^0.34.4", "ws": "8.18.3", }, "devDependencies": { @@ -23,8 +24,56 @@ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "@emnapi/runtime": ["@emnapi/runtime@1.6.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA=="], + "@epic-web/invariant": ["@epic-web/invariant@1.0.0", "", {}, "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA=="], + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], + + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA=="], + + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.3" }, "os": "darwin", "cpu": "x64" }, "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg=="], + + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw=="], + + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA=="], + + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.3", "", { "os": "linux", "cpu": "arm" }, "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA=="], + + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ=="], + + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg=="], + + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w=="], + + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg=="], + + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw=="], + + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.3", "", { "os": "linux", "cpu": "x64" }, "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g=="], + + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.3" }, "os": "linux", "cpu": "arm" }, "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA=="], + + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ=="], + + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ=="], + + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.3" }, "os": "linux", "cpu": "s390x" }, "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw=="], + + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" }, "os": "linux", "cpu": "arm64" }, "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.3" }, "os": "linux", "cpu": "x64" }, "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.4", "", { "dependencies": { "@emnapi/runtime": "^1.5.0" }, "cpu": "none" }, "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.4", "", { "os": "win32", "cpu": "x64" }, "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig=="], + "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], @@ -93,6 +142,8 @@ "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], "expect": ["expect@30.2.0", "", { "dependencies": { "@jest/expect-utils": "30.2.0", "@jest/get-type": "30.1.0", "jest-matcher-utils": "30.2.0", "jest-message-util": "30.2.0", "jest-mock": "30.2.0", "jest-util": "30.2.0" } }, "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw=="], @@ -157,6 +208,10 @@ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "sharp": ["sharp@0.34.4", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.0", "semver": "^7.7.2" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.4", "@img/sharp-darwin-x64": "0.34.4", "@img/sharp-libvips-darwin-arm64": "1.2.3", "@img/sharp-libvips-darwin-x64": "1.2.3", "@img/sharp-libvips-linux-arm": "1.2.3", "@img/sharp-libvips-linux-arm64": "1.2.3", "@img/sharp-libvips-linux-ppc64": "1.2.3", "@img/sharp-libvips-linux-s390x": "1.2.3", "@img/sharp-libvips-linux-x64": "1.2.3", "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", "@img/sharp-libvips-linuxmusl-x64": "1.2.3", "@img/sharp-linux-arm": "0.34.4", "@img/sharp-linux-arm64": "0.34.4", "@img/sharp-linux-ppc64": "0.34.4", "@img/sharp-linux-s390x": "0.34.4", "@img/sharp-linux-x64": "0.34.4", "@img/sharp-linuxmusl-arm64": "0.34.4", "@img/sharp-linuxmusl-x64": "0.34.4", "@img/sharp-wasm32": "0.34.4", "@img/sharp-win32-arm64": "0.34.4", "@img/sharp-win32-ia32": "0.34.4", "@img/sharp-win32-x64": "0.34.4" } }, "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], diff --git a/dist/call-wrapper.d.ts.map b/dist/call-wrapper.d.ts.map index c63d825..3965b55 100644 --- a/dist/call-wrapper.d.ts.map +++ b/dist/call-wrapper.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"call-wrapper.d.ts","sourceRoot":"","sources":["../src/call-wrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"call-wrapper.d.ts","sourceRoot":"","sources":["../src/call-wrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/call-wrapper.js b/dist/call-wrapper.js index 8dced86..0c04eb0 100644 --- a/dist/call-wrapper.js +++ b/dist/call-wrapper.js @@ -1,6 +1,7 @@ import { FailedCacheError, WentMissingError, EnqueueFailedError, DisconnectedError, CustomEventError, ExecutionFailedError, ExecutionInterruptedError, MissingNodeError } from "./types/error.js"; -const DISCONNECT_FAILURE_GRACE_MS = 5000; import { buildEnqueueFailedError } from "./utils/response-error.js"; +const DISCONNECT_FAILURE_GRACE_MS = 5000; +const CALL_WRAPPER_DEBUG = process.env.WORKFLOW_POOL_DEBUG === "1"; /** * Represents a wrapper class for making API calls using the ComfyApi client. * Provides methods for setting callback functions and executing the job. @@ -391,6 +392,8 @@ export class CallWrapper { return; } this.promptId = job.prompt_id; + console.log(`[CallWrapper] Enqueued with promptId=${this.promptId?.substring(0, 8)}...`); + console.log(`[CallWrapper] Full job object:`, JSON.stringify({ promptId: job.prompt_id }, null, 2)); this.emitLog("CallWrapper.enqueueJob", "queued", { prompt_id: this.promptId }); this.onPendingFn?.(this.promptId); this.onDisconnectedHandlerOffFn = this.client.on("disconnected", () => { @@ -435,14 +438,18 @@ export class CallWrapper { } } resolveJob(value) { - console.log("[debug] resolveJob", this.promptId, value, Boolean(this.jobResolveFn), this.jobDoneResolved); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] resolveJob", this.promptId, value, Boolean(this.jobResolveFn), this.jobDoneResolved); + } if (this.jobResolveFn) { if (this.jobDoneResolved) { return; } this.jobDoneResolved = true; this.jobResolveFn(value); - console.log("[debug] jobResolveFn invoked", this.promptId); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] jobResolveFn invoked", this.promptId); + } } else { this.pendingCompletion = value; @@ -455,9 +462,13 @@ export class CallWrapper { } const targetPromptId = promptId ?? this.promptId; try { - console.log("[debug] emitFailure start", error.name); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] emitFailure start", error.name); + } fn(error, targetPromptId); - console.log("[debug] emitFailure end", error.name); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] emitFailure end", error.name); + } } catch (callbackError) { this.emitLog("CallWrapper.emitFailure", "onFailed callback threw", { @@ -603,10 +614,26 @@ export class CallWrapper { return; } const reverseOutputMapped = this.reverseMapOutputKeys(); + const mapOutputKeys = this.prompt.mapOutputKeys; + console.log(`[CallWrapper] handleJobExecution for ${promptId.substring(0, 8)}... - mapOutputKeys:`, mapOutputKeys, "reverseOutputMapped:", reverseOutputMapped); this.progressHandlerOffFn = this.client.on("progress", (ev) => this.handleProgress(ev, promptId)); - this.previewHandlerOffFn = this.client.on("b_preview", (ev) => this.onPreviewFn?.(ev.detail, this.promptId)); + this.previewHandlerOffFn = this.client.on("b_preview", (ev) => { + // Note: b_preview events don't include prompt_id. They're scoped per connection. + // If multiple jobs use the same connection, they will all receive preview events. + // This is a limitation of the ComfyUI protocol - previews are not separated by prompt_id. + this.onPreviewFn?.(ev.detail, this.promptId); + }); // Also forward preview with metadata if available - const offPreviewMeta = this.client.on("b_preview_meta", (ev) => this.onPreviewMetaFn?.(ev.detail, this.promptId)); + const offPreviewMeta = this.client.on("b_preview_meta", (ev) => { + // Validate prompt_id from metadata if available to prevent cross-user preview leakage + const metadata = ev.detail.metadata; + const metaPromptId = metadata?.prompt_id; + if (metaPromptId && metaPromptId !== promptId) { + console.log(`[CallWrapper] Ignoring b_preview_meta for wrong prompt. Expected ${promptId.substring(0, 8)}..., got ${metaPromptId.substring(0, 8)}...`); + return; + } + this.onPreviewMetaFn?.(ev.detail, this.promptId); + }); const prevCleanup = this.previewHandlerOffFn; this.previewHandlerOffFn = () => { prevCleanup?.(); @@ -614,16 +641,18 @@ export class CallWrapper { }; const totalOutput = Object.keys(reverseOutputMapped).length; let remainingOutput = totalOutput; + console.log(`[CallWrapper] totalOutput=${totalOutput}, remainingOutput=${remainingOutput}`); const executionHandler = (ev) => { - if (ev.detail.prompt_id !== promptId) + console.log(`[CallWrapper.executionHandler] received executed event for promptId=${ev.detail.prompt_id?.substring(0, 8)}..., node=${ev.detail.node}, waitingFor=${promptId.substring(0, 8)}...`); + const eventPromptId = ev.detail.prompt_id; + const isCorrectPrompt = eventPromptId === promptId; + // STRICT: Only accept events where prompt_id matches our expected promptId + if (!isCorrectPrompt) { + console.log(`[CallWrapper.executionHandler] REJECTED - prompt_id mismatch (expected ${promptId.substring(0, 8)}..., got ${eventPromptId?.substring(0, 8)}...)`); return; + } const outputKey = reverseOutputMapped[ev.detail.node]; - this.emitLog("CallWrapper.executionHandler", "executed event received", { - node: ev.detail.node, - outputKey, - remainingBefore: remainingOutput, - isTrackedOutput: !!outputKey - }); + console.log(`[CallWrapper] executionHandler - promptId: ${promptId.substring(0, 8)}... (event says: ${ev.detail.prompt_id?.substring(0, 8)}...), node: ${ev.detail.node}, outputKey: ${outputKey}, output:`, JSON.stringify(ev.detail.output)); if (outputKey) { this.output[outputKey] = ev.detail.output; this.onOutputFn?.(outputKey, ev.detail.output, this.promptId); @@ -634,12 +663,9 @@ export class CallWrapper { this.output._raw[ev.detail.node] = ev.detail.output; this.onOutputFn?.(ev.detail.node, ev.detail.output, this.promptId); } - this.emitLog("CallWrapper.executionHandler", "after processing executed event", { - remainingAfter: remainingOutput, - willTriggerCompletion: remainingOutput === 0 - }); + console.log(`[CallWrapper] afterProcessing - remainingAfter: ${remainingOutput}, willTriggerCompletion: ${remainingOutput === 0}`); if (remainingOutput === 0) { - this.emitLog("CallWrapper.handleJobExecution", "all outputs collected"); + console.log(`[CallWrapper] all outputs collected for ${promptId.substring(0, 8)}...`); // Mark as successfully completing BEFORE cleanup to prevent race condition with disconnection handler this.isCompletingSuccessfully = true; this.cleanupListeners("all outputs collected"); @@ -648,27 +674,90 @@ export class CallWrapper { } }; const executedEnd = async () => { - this.emitLog("CallWrapper.executedEnd", "execution_success fired", { - promptId, - remainingOutput, - totalOutput - }); + console.log(`[CallWrapper] execution_success fired for ${promptId.substring(0, 8)}..., remainingOutput=${remainingOutput}, totalOutput=${totalOutput}`); + // If we've already marked this as successfully completing, don't fail it again + if (this.isCompletingSuccessfully) { + console.log(`[CallWrapper] Already marked as successfully completing, ignoring this execution_success`); + return; + } + if (remainingOutput === 0) { + console.log(`[CallWrapper] all outputs already collected, nothing to do`); + return; + } + // Wait briefly for outputs that might be arriving due to prompt ID mismatch + await new Promise(resolve => setTimeout(resolve, 100)); + console.log(`[CallWrapper] After wait - remainingOutput=${remainingOutput}, this.output keys:`, Object.keys(this.output)); + // Check if outputs arrived while we were waiting if (remainingOutput === 0) { - this.emitLog("CallWrapper.executedEnd", "all outputs already collected, nothing to do"); + console.log(`[CallWrapper] Outputs arrived during wait - marking as complete`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - outputs complete after wait"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); + return; + } + // Check if we have collected all outputs (even if prompt ID mismatch) + const hasAllOutputs = Object.keys(reverseOutputMapped).every(nodeId => this.output[reverseOutputMapped[nodeId]] !== undefined); + if (hasAllOutputs) { + console.log(`[CallWrapper] Have all required outputs despite promptId mismatch - marking as complete`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - outputs complete despite promptId mismatch"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); return; } - const hisData = await this.client.ext.history.getHistory(promptId); - if (hisData?.status?.completed) { - const outputCount = Object.keys(hisData.outputs ?? {}).length; - if (outputCount > 0 && outputCount - totalOutput === 0) { - this.emitLog("CallWrapper.executedEnd", "outputs equal total after history check -> ignore false end"); + // Try to fetch from history with retry logic + let hisData = null; + for (let retries = 0; retries < 5; retries++) { + hisData = await this.client.ext.history.getHistory(promptId); + console.log(`[CallWrapper] History query result for ${promptId.substring(0, 8)}... (attempt ${retries + 1}) - status:`, hisData?.status, 'outputs:', Object.keys(hisData?.outputs ?? {}).length); + if (hisData?.status?.completed && hisData.outputs) { + console.log(`[CallWrapper] Found completed job in history with outputs - attempting to populate from history`); + break; + } + if (retries < 4) { + console.log(`[CallWrapper] History not ready yet, waiting 100ms before retry...`); + await new Promise(resolve => setTimeout(resolve, 100)); + } + } + if (hisData?.status?.completed && hisData.outputs) { + // Try to extract outputs from history data + let populatedCount = 0; + for (const [nodeIdStr, nodeOutput] of Object.entries(hisData.outputs)) { + const nodeId = parseInt(nodeIdStr, 10); + const outputKey = reverseOutputMapped[nodeId]; + if (outputKey && nodeOutput) { + // nodeOutput is typically { images: [...] } or similar - take the first property + const outputValue = Array.isArray(nodeOutput) ? nodeOutput[0] : Object.values(nodeOutput)[0]; + if (outputValue !== undefined) { + this.output[outputKey] = outputValue; + this.onOutputFn?.(outputKey, outputValue, this.promptId); + populatedCount++; + remainingOutput--; + console.log(`[CallWrapper] Populated ${outputKey} from history`); + } + } + } + if (remainingOutput === 0) { + console.log(`[CallWrapper] Successfully populated all outputs from history for ${promptId.substring(0, 8)}...`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - populated from history"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); return; } + if (populatedCount > 0) { + console.log(`[CallWrapper] Populated ${populatedCount} outputs from history (remainingOutput=${remainingOutput})`); + if (remainingOutput === 0) { + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - all outputs from history"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); + return; + } + } } - this.emitLog("CallWrapper.executedEnd", "execution failed due to missing outputs", { - remainingOutput, - totalOutput - }); + console.log(`[CallWrapper] execution failed due to missing outputs - remainingOutput=${remainingOutput}, totalOutput=${totalOutput}`); this.emitFailure(new ExecutionFailedError("Execution failed"), this.promptId); this.resolvePromptLoad(false); this.cleanupListeners("executedEnd missing outputs"); @@ -676,6 +765,7 @@ export class CallWrapper { }; this.executionEndSuccessOffFn = this.client.on("execution_success", executedEnd); this.executionHandlerOffFn = this.client.on("executed", executionHandler); + console.log(`[CallWrapper] Registered listeners for ${promptId.substring(0, 8)}... - executionHandler and executedEnd`); this.errorHandlerOffFn = this.client.on("execution_error", (ev) => this.handleError(ev, promptId)); this.interruptionHandlerOffFn = this.client.on("execution_interrupted", (ev) => { if (ev.detail.prompt_id !== promptId) @@ -709,11 +799,17 @@ export class CallWrapper { node_id: ev.detail?.node_id }); this.emitFailure(new CustomEventError(ev.detail.exception_type, { cause: ev.detail }), ev.detail.prompt_id); - console.log("[debug] handleError after emitFailure"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError after emitFailure"); + } this.resolvePromptLoad(false); - console.log("[debug] handleError before cleanup"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError before cleanup"); + } this.cleanupListeners("execution_error received"); - console.log("[debug] handleError after cleanup"); + if (CALL_WRAPPER_DEBUG) { + console.log("[debug] handleError after cleanup"); + } this.resolveJob(false); } emitLog(fnName, message, data) { diff --git a/dist/call-wrapper.js.map b/dist/call-wrapper.js.map index a63777e..3d2c2a9 100644 --- a/dist/call-wrapper.js.map +++ b/dist/call-wrapper.js.map @@ -1 +1 @@ -{"version":3,"file":"call-wrapper.js","sourceRoot":"","sources":["../src/call-wrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"call-wrapper.js","sourceRoot":"","sources":["../src/call-wrapper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 061b0a3..7e0468a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,3 @@ -export { hashWorkflow } from "./pool/utils/hash.js"; export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index b64dfb7..331ee2c 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 4cf98b8..f71f395 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,3 @@ -export { hashWorkflow } from "./pool/utils/hash.js"; export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; diff --git a/dist/index.js.map b/dist/index.js.map index ac5bad3..bc32e2d 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/pool/SmartPool.d.ts b/dist/pool/SmartPool.d.ts new file mode 100644 index 0000000..9f9923c --- /dev/null +++ b/dist/pool/SmartPool.d.ts @@ -0,0 +1,46 @@ +import { WorkflowAffinity } from "./types/affinity.js"; +import { JobId, JobRecord } from "./types/job.js"; +import { ComfyApi } from "src/client.js"; +import { Workflow } from "src/workflow.js"; +interface SmartPoolOptions { + connectionTimeoutMs: number; +} +interface PoolEvent { + type: string; + promptId: string; + clientId: string; + workflowHash: string; + data?: any; +} +interface ClientQueueState { + queuedJobs: number; + runningJobs: number; +} +export declare class SmartPool { + clientMap: Map; + clientQueueStates: Map; + jobStore: Map; + affinities: Map; + private options; + hooks: { + any?: (event: PoolEvent) => void; + [key: string]: ((event: PoolEvent) => void) | undefined; + }; + constructor(clients: (ComfyApi | string)[], options?: Partial); + emit(event: PoolEvent): void; + connect(): Promise; + shutdown(): void; + syncQueueStates(): Promise; + addJob(jobId: JobId, jobRecord: JobRecord): void; + getJob(jobId: JobId): JobRecord | undefined; + removeJob(jobId: JobId): void; + setAffinity(workflow: object, affinity: Omit): void; + getAffinity(workflowHash: string): WorkflowAffinity | undefined; + removeAffinity(workflowHash: string): void; + executeImmediate(workflow: Workflow, opts: { + preferableClientIds?: string[]; + }): Promise; + private waitForExecutionCompletion; +} +export {}; +//# sourceMappingURL=SmartPool.d.ts.map \ No newline at end of file diff --git a/dist/pool/SmartPool.d.ts.map b/dist/pool/SmartPool.d.ts.map new file mode 100644 index 0000000..04a4775 --- /dev/null +++ b/dist/pool/SmartPool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IAGpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAG7C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAG7D,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAa;IAG5C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAGtD,OAAO,CAAC,OAAO,CAAmB;IAGlC,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACzD,CAAM;gBAEK,OAAO,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAkB/E,IAAI,CAAC,KAAK,EAAE,SAAS;IAUf,OAAO;IA8Cb,QAAQ;IAUF,eAAe;IAqBrB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAKzC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAK3C,SAAS,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAS9E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK/D,cAAc,CAAC,YAAY,EAAE,MAAM;IAI7B,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,GAAG,OAAO,CAAC,GAAG,CAAC;YA2IF,0BAA0B;CAgHzC"} \ No newline at end of file diff --git a/dist/pool/SmartPool.js b/dist/pool/SmartPool.js new file mode 100644 index 0000000..6bfd62b --- /dev/null +++ b/dist/pool/SmartPool.js @@ -0,0 +1,358 @@ +import { hashWorkflow } from "src/pool/utils/hash.js"; +import { ComfyApi } from "src/client.js"; +import { PromptBuilder } from "src/prompt-builder.js"; +const DEFAULT_SMART_POOL_OPTIONS = { + connectionTimeoutMs: 10000 +}; +export class SmartPool { + // Clients managed by the pool + clientMap = new Map(); + // Queue state of pool clients + clientQueueStates = new Map(); + // In-memory store for job records + jobStore = new Map(); + // Affinities mapping workflow hashes to preferred clients + affinities = new Map(); + // Pool options + options; + // Hooks for pool-wide events + hooks = {}; + constructor(clients, options) { + if (options) { + this.options = { ...DEFAULT_SMART_POOL_OPTIONS, ...options }; + } + else { + this.options = DEFAULT_SMART_POOL_OPTIONS; + } + for (const client of clients) { + if (typeof client === "string") { + const apiClient = new ComfyApi(client); + this.clientMap.set(apiClient.apiHost, apiClient); + } + else { + this.clientMap.set(client.apiHost, client); + } + } + } + emit(event) { + if (this.hooks.any) { + this.hooks.any(event); + } + const specificHook = this.hooks[event.type]; + if (specificHook) { + specificHook(event); + } + } + async connect() { + const connectionPromises = []; + const tRefZero = Date.now(); + for (const [url, client] of this.clientMap.entries()) { + connectionPromises.push(new Promise(async (resolve, reject) => { + const timeout = setTimeout(() => { + client.abortReconnect(); + reject(new Error(`Connection to client at ${url} timed out`)); + }, this.options.connectionTimeoutMs); + try { + const comfyApi = await client.init(1); + comfyApi.on("connected", (event) => { + if (event.type === "connected") { + const tRefDone = Date.now(); + const tDelta = tRefDone - tRefZero; + console.log(`Client at ${url} (${event.target?.osType}) connected via websockets in ${tDelta} ms`); + resolve(comfyApi); + } + }); + } + catch (reason) { + console.error(`Failed to connect to client at ${url}:`, reason); + reject(reason); + } + finally { + clearTimeout(timeout); + } + })); + } + // Wait for all connection attempts to settle + const results = await Promise.allSettled(connectionPromises); + // Check for any rejected connections + const rejected = results.filter(result => result.status === "rejected"); + // Warn if there are any rejected connections + if (rejected.length > 0) { + console.warn(`${rejected.length} client(s) failed to connect.`); + for (const rejectedClient of rejected) { + console.warn(`Client rejection reason: ${rejectedClient.reason}`); + } + } + // Sync queue states after connections + await this.syncQueueStates(); + } + shutdown() { + for (const client of this.clientMap.values()) { + try { + client.destroy(); + } + catch (reason) { + console.error(`Error shutting down client at ${client.apiHost}:`, reason); + } + } + } + async syncQueueStates() { + const promises = Array + .from(this.clientMap.values()) + .filter(value => value.isReady) + .map(value => { + return new Promise(resolve => { + value.getQueue().then(value1 => { + console.log(value1); + this.clientQueueStates.set(value.apiHost, { + queuedJobs: value1.queue_pending.length, + runningJobs: value1.queue_running.length + }); + resolve(true); + }); + }); + }); + await Promise.allSettled(promises); + console.log(this.clientQueueStates); + } + // Add a job record to the pool + addJob(jobId, jobRecord) { + this.jobStore.set(jobId, jobRecord); + } + // Get a job record from the pool + getJob(jobId) { + return this.jobStore.get(jobId); + } + // Remove a job record from the pool + removeJob(jobId) { + this.jobStore.delete(jobId); + } + // Set the affinity for a workflow + setAffinity(workflow, affinity) { + const workflowHash = hashWorkflow(workflow); + this.affinities.set(workflowHash, { + workflowHash, + ...affinity + }); + } + // Get the affinity for a workflow + getAffinity(workflowHash) { + return this.affinities.get(workflowHash); + } + // Remove the affinity for a workflow + removeAffinity(workflowHash) { + this.affinities.delete(workflowHash); + } + async executeImmediate(workflow, opts) { + const candidateClients = []; + let workflowHash = workflow.structureHash; + // Determine candidate clients based on preferred IDs + if (opts.preferableClientIds && opts.preferableClientIds.length > 0) { + for (const clientId of opts.preferableClientIds) { + const client = this.clientMap.get(clientId); + if (client && client.isReady) { + candidateClients.push(client); + } + } + } + else { + // Check for affinity based on workflow hash + console.log(`Looking up affinity for workflow hash: ${workflowHash}`); + if (workflowHash) { + const affinity = this.getAffinity(workflowHash); + if (affinity && affinity.preferredClientIds) { + for (const clientId of affinity.preferredClientIds) { + const client = this.clientMap.get(clientId); + if (client && client.isReady) { + candidateClients.push(client); + } + } + } + } + } + if (candidateClients.length === 0) { + // Fallback to any available client + for (const client of this.clientMap.values()) { + if (client.isReady) { + candidateClients.push(client); + } + } + } + if (candidateClients.length === 0) { + throw new Error("No available clients match the preferred client IDs"); + } + // For simplicity, pick the first available candidate client + const selectedClient = candidateClients[0]; + workflowHash = workflowHash || workflow.structureHash || ""; + // Queue the workflow and get the prompt_id + // Build PromptBuilder from the workflow to get proper prompt format + const workflowJson = workflow.json || workflow; + const outputNodeIds = workflow.outputNodeIds || []; + // Auto-randomize any node input field named 'seed' whose value is -1 (common ComfyUI convention) + const autoSeeds = {}; + try { + for (const [nodeId, node] of Object.entries(workflowJson)) { + const n = node; + if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { + if (n.inputs.seed === -1) { + const val = Math.floor(Math.random() * 2_147_483_647); // 32-bit positive range typical for seeds + n.inputs.seed = val; + autoSeeds[nodeId] = val; + } + } + } + } + catch { /* non-fatal */ } + const pb = new PromptBuilder(workflowJson, [], outputNodeIds); + // Map output nodes + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId, nodeId); + } + const promptJson = pb.prompt; + console.log(`[SmartPool] Queuing workflow with prompt containing nodes:`, Object.keys(promptJson || {}).slice(0, 5)); + try { + const queueResponse = await selectedClient.ext.queue.appendPrompt(promptJson); + const promptId = queueResponse.prompt_id; + console.log(`[SmartPool] Queued workflow on ${selectedClient.apiHost} with promptId=${promptId.substring(0, 8)}...`); + this.emit({ + type: "workflow:executeImmediate", + promptId, + workflowHash, + clientId: selectedClient.apiHost + }); + // Simple execution wrapper: collect outputs from executed events and handle completion + const result = await this.waitForExecutionCompletion(selectedClient, promptId, workflow); + console.log(`[SmartPool] Job completed with promptId: ${promptId.substring(0, 8)}...`); + const images = []; + // Fetch outputs using the authoritative prompt ID + try { + const historyData = await selectedClient.ext.history.getHistory(promptId); + if (historyData && historyData.outputs) { + for (const nodeId of Object.keys(historyData.outputs)) { + const nodeOutput = historyData.outputs[nodeId]; + if (nodeOutput.images && nodeOutput.images.length > 0) { + console.log(`[SmartPool] Found output from history node ${nodeId}: ${nodeOutput.images[0].filename}`); + images.push(...nodeOutput.images); + break; + } + } + } + } + catch (e) { + console.log(`[SmartPool] Failed to fetch history: ${e}`); + } + // Fallback to result object if history didn't give us images + if (images.length === 0) { + console.log(`[SmartPool] Falling back to result object`); + const aliases = result._aliases || {}; + for (const aliasKey of Object.keys(aliases)) { + const aliasObject = result[aliases[aliasKey]]; + if (aliasObject && aliasObject.images) { + images.push(...aliasObject.images); + } + } + } + // Read images from the client that executed the workflow + const imageBlob = await selectedClient.ext.file.getImage(images[0]); + console.log(`[SmartPool] Fetched image blob for file: ${JSON.stringify(images[0])}`); + console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); + return { ...result, images, imageBlob }; + } + catch (err) { + console.error(`[SmartPool] Failed to execute workflow:`, err); + throw err; + } + } + async waitForExecutionCompletion(client, promptId, workflow) { + return new Promise((resolve, reject) => { + const result = { + _promptId: promptId, + _aliases: {}, + _nodes: [] + }; + const collectedNodes = new Set(); + const executedHandler = (ev) => { + const eventPromptId = ev.detail.prompt_id; + // Only process events for our specific prompt + if (eventPromptId !== promptId) { + return; + } + const nodeId = ev.detail.node; + const output = ev.detail.output; + // Store output keyed by node ID + result[nodeId] = output; + collectedNodes.add(nodeId); + console.log(`[SmartPool.waitForExecutionCompletion] Collected output from node: ${nodeId}`); + }; + const executionSuccessHandler = async (ev) => { + const eventPromptId = ev.detail.prompt_id; + // Only process events for our specific prompt + if (eventPromptId !== promptId) { + return; + } + console.log(`[SmartPool.waitForExecutionCompletion] execution_success fired for ${promptId.substring(0, 8)}...`); + // Try to fetch complete outputs from history + for (let retries = 0; retries < 5; retries++) { + try { + const historyData = await client.ext.history.getHistory(promptId); + if (historyData?.outputs) { + console.log(`[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt ${retries + 1})`); + // Populate result from history for any nodes we didn't get from websocket + for (const [nodeIdStr, nodeOutput] of Object.entries(historyData.outputs)) { + const nodeId = parseInt(nodeIdStr, 10).toString(); + // Only add if we haven't collected this node yet + if (!collectedNodes.has(nodeId) && nodeOutput) { + // Extract the actual output value + const outputValue = Array.isArray(nodeOutput) ? nodeOutput[0] : Object.values(nodeOutput)[0]; + if (outputValue !== undefined) { + result[nodeId] = outputValue; + collectedNodes.add(nodeId); + } + } + } + // Store collected node IDs + result._nodes = Array.from(collectedNodes); + cleanup(); + resolve(result); + return; + } + } + catch (e) { + // Continue retrying + } + if (retries < 4) { + await new Promise(r => setTimeout(r, 100)); + } + } + // Resolve even if we didn't get all outputs + result._nodes = Array.from(collectedNodes); + cleanup(); + resolve(result); + }; + const executionErrorHandler = (ev) => { + const eventPromptId = ev.detail.prompt_id; + if (eventPromptId !== promptId) { + return; + } + console.error(`[SmartPool.waitForExecutionCompletion] Execution error:`, ev.detail); + cleanup(); + reject(new Error(`Execution failed: ${JSON.stringify(ev.detail)}`)); + }; + const cleanup = () => { + offExecuted?.(); + offExecutionSuccess?.(); + offExecutionError?.(); + clearTimeout(timeoutHandle); + }; + const offExecuted = client.on("executed", executedHandler); + const offExecutionSuccess = client.on("execution_success", executionSuccessHandler); + const offExecutionError = client.on("execution_error", executionErrorHandler); + // Timeout after 5 minutes + const timeoutHandle = setTimeout(() => { + cleanup(); + reject(new Error("Execution timeout")); + }, 5 * 60 * 1000); + }); + } +} +//# sourceMappingURL=SmartPool.js.map \ No newline at end of file diff --git a/dist/pool/SmartPool.js.map b/dist/pool/SmartPool.js.map new file mode 100644 index 0000000..401e406 --- /dev/null +++ b/dist/pool/SmartPool.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SmartPool.js","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.d.ts b/dist/pool/WorkflowPool.d.ts index ef9b820..aa19e42 100644 --- a/dist/pool/WorkflowPool.d.ts +++ b/dist/pool/WorkflowPool.d.ts @@ -172,7 +172,10 @@ export declare class WorkflowPool extends TypedEventTarget private affinities; private initPromise; private processing; + private processQueued; private activeJobs; + private readonly queueDebug; + private debugLog; constructor(clients: ComfyApi[], opts?: WorkflowPoolOpts); ready(): Promise; setAffinity(affinity: WorkflowAffinity): void; diff --git a/dist/pool/WorkflowPool.d.ts.map b/dist/pool/WorkflowPool.d.ts.map index 2e7ff84..e567950 100644 --- a/dist/pool/WorkflowPool.d.ts.map +++ b/dist/pool/WorkflowPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAA2C;gBAEjD,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YAyJZ,MAAM;CA+drB"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.d.ts","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,KAAK,EAAE,YAAY,EAAoB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAsB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAaD,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,kBAAkB,CAA+D;IACzF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE,OAAO,CAAC,QAAQ;gBAMJ,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB;IAoClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAI7C,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI7C,aAAa,IAAI,gBAAgB,EAAE;IAIpC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEzF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,MAAM,CAAC,UAAU;IAMzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,+BAA+B;YAUzB,YAAY;YA+JZ,MAAM;CAyerB"} \ No newline at end of file diff --git a/dist/pool/WorkflowPool.js b/dist/pool/WorkflowPool.js index 7c0f990..d863726 100644 --- a/dist/pool/WorkflowPool.js +++ b/dist/pool/WorkflowPool.js @@ -23,7 +23,14 @@ export class WorkflowPool extends TypedEventTarget { affinities = new Map(); initPromise; processing = false; + processQueued = false; activeJobs = new Map(); + queueDebug = process.env.WORKFLOW_POOL_DEBUG === "1"; + debugLog(...args) { + if (this.queueDebug) { + console.log(...args); + } + } constructor(clients, opts) { super(); this.strategy = opts?.failoverStrategy ?? new SmartFailoverStrategy(); @@ -277,9 +284,10 @@ export class WorkflowPool extends TypedEventTarget { }); } async processQueue() { - console.log("[processQueue] Called"); + this.debugLog("[processQueue] Called"); if (this.processing) { - console.log("[processQueue] Already processing, returning early"); + this.debugLog("[processQueue] Already processing, returning early"); + this.processQueued = true; return; } this.processing = true; @@ -288,17 +296,17 @@ export class WorkflowPool extends TypedEventTarget { let iteration = 0; while (true) { iteration++; - console.log(`[processQueue] Iteration ${iteration}`); + this.debugLog(`[processQueue] Iteration ${iteration}`); const idleClients = this.clientManager.list().filter(c => this.clientManager.isClientStable(c)); - console.log(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); + this.debugLog(`[processQueue] Idle clients: [${idleClients.map(c => c.id).join(", ")}] (${idleClients.length})`); if (!idleClients.length) { - console.log("[processQueue] No idle clients, breaking"); + this.debugLog("[processQueue] No idle clients, breaking"); break; // No idle clients available } const waitingJobs = await this.queue.peek(100); // Peek at top 100 jobs - console.log(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); + this.debugLog(`[processQueue] Waiting jobs in queue: ${waitingJobs.length}`); if (!waitingJobs.length) { - console.log("[processQueue] No waiting jobs, breaking"); + this.debugLog("[processQueue] No waiting jobs, breaking"); break; // No jobs in queue } const leasedClientIds = new Set(); @@ -307,22 +315,22 @@ export class WorkflowPool extends TypedEventTarget { for (const jobPayload of waitingJobs) { const job = this.jobStore.get(jobPayload.jobId); if (!job) { - console.log(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); + this.debugLog(`[processQueue] Job ${jobPayload.jobId} not in jobStore, skipping`); continue; } const compatibleClients = idleClients .filter(client => { const canRun = this.clientManager.canClientRunJob(client, job); if (!canRun) { - console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); - console.log(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); - console.log(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); - console.log(`[processQueue] - client.id: ${client.id}`); + this.debugLog(`[processQueue] Job ${job.jobId.substring(0, 8)}... NOT compatible with ${client.id}. Checking why...`); + this.debugLog(`[processQueue] - preferredClientIds: ${JSON.stringify(job.options.preferredClientIds)}`); + this.debugLog(`[processQueue] - excludeClientIds: ${JSON.stringify(job.options.excludeClientIds)}`); + this.debugLog(`[processQueue] - client.id: ${client.id}`); } return canRun; }) .map(client => client.id); - console.log(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); + this.debugLog(`[processQueue] Job ${job.jobId.substring(0, 8)}... compatible with: [${compatibleClients.join(", ")}] (selectivity=${compatibleClients.length})`); if (compatibleClients.length > 0) { jobMatchInfos.push({ jobPayload, @@ -332,9 +340,9 @@ export class WorkflowPool extends TypedEventTarget { }); } } - console.log(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); + this.debugLog(`[processQueue] Found ${jobMatchInfos.length} compatible job matches`); if (jobMatchInfos.length === 0) { - console.log("[processQueue] No compatible jobs for idle clients, breaking"); + this.debugLog("[processQueue] No compatible jobs for idle clients, breaking"); break; // No compatible jobs for idle clients } // Sort jobs by priority first, then selectivity, to maximize throughput @@ -365,10 +373,10 @@ export class WorkflowPool extends TypedEventTarget { // Find first available compatible client const availableClient = matchInfo.compatibleClients.find(clientId => !leasedClientIds.has(clientId)); if (!availableClient) { - console.log(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); + this.debugLog(`[processQueue] No available client for job ${matchInfo.job.jobId.substring(0, 8)}...`); continue; // No available clients for this job } - console.log(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); + this.debugLog(`[processQueue] Reserving job ${matchInfo.job.jobId.substring(0, 8)}... for client ${availableClient}`); const reservation = await this.queue.reserveById(matchInfo.job.jobId); if (reservation) { // Mark as leased/reserved for this cycle @@ -378,7 +386,7 @@ export class WorkflowPool extends TypedEventTarget { // Get the lease (which marks the client as busy) const lease = this.clientManager.claim(matchInfo.job, availableClient); if (lease) { - console.log(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); + this.debugLog(`[processQueue] Starting job ${matchInfo.job.jobId.substring(0, 8)}... on client ${availableClient}`); this.runJob({ reservation, job: matchInfo.job, clientId: lease.clientId, release: lease.release }).catch((error) => { console.error("[WorkflowPool] Unhandled job error", error); }); @@ -390,29 +398,42 @@ export class WorkflowPool extends TypedEventTarget { } } else { - console.log(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); + this.debugLog(`[processQueue] Failed to reserve job ${matchInfo.job.jobId.substring(0, 8)}...`); } } - console.log(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); + this.debugLog(`[processQueue] Assigned any job in this iteration: ${assignedAnyJob}`); // If we didn't assign any jobs this iteration, no point continuing if (!assignedAnyJob) { - console.log("[processQueue] No jobs assigned, breaking"); + this.debugLog("[processQueue] No jobs assigned, breaking"); break; } } } finally { - console.log("[processQueue] Exiting, setting processing = false"); + this.debugLog("[processQueue] Exiting, setting processing = false"); this.processing = false; + if (this.processQueued) { + this.debugLog("[processQueue] Pending rerun detected, draining queue again"); + this.processQueued = false; + void this.processQueue(); + } } } async runJob(ctx) { const { reservation, job, clientId, release } = ctx; + let released = false; + const safeRelease = (opts) => { + if (released) { + return; + } + released = true; + release(opts); + }; const managed = this.clientManager.getClient(clientId); const client = managed?.client; if (!client) { await this.queue.retry(reservation.reservationId, { delayMs: job.options.retryDelayMs }); - release({ success: false }); + safeRelease({ success: false }); return; } job.status = "running"; @@ -692,10 +713,11 @@ export class WorkflowPool extends TypedEventTarget { } completionError = undefined; this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + safeRelease({ success: true }); resolveCompletion?.(); }); wrapper.onFailed((error, promptId) => { - console.log("[debug] wrapper.onFailed", job.jobId, error.name); + this.debugLog("[debug] wrapper.onFailed", job.jobId, error.name); if (!job.promptId && promptId) { job.promptId = promptId; } @@ -704,7 +726,8 @@ export class WorkflowPool extends TypedEventTarget { cleanupNodeTimeout(); rejectPending?.(error); completionError = error; - console.log("[debug] resolveCompletion available", Boolean(resolveCompletion)); + this.debugLog("[debug] resolveCompletion available", Boolean(resolveCompletion)); + safeRelease({ success: false }); resolveCompletion?.(); }); try { @@ -735,7 +758,7 @@ export class WorkflowPool extends TypedEventTarget { reservation, job, clientId, - release, + release: (opts) => safeRelease(opts), cancel: async () => { try { wrapper.cancel("workflow pool cancel"); @@ -746,7 +769,7 @@ export class WorkflowPool extends TypedEventTarget { finally { this.activeJobs.delete(job.jobId); await this.queue.discard(reservation.reservationId, new Error("cancelled")); - release({ success: false }); + safeRelease({ success: false }); } } }); @@ -760,11 +783,11 @@ export class WorkflowPool extends TypedEventTarget { throw errorToThrow; } await this.queue.commit(reservation.reservationId); - release({ success: true }); + safeRelease({ success: true }); } catch (error) { // Immediately release the client on any failure - release({ success: false }); + safeRelease({ success: false }); const latestStatus = this.jobStore.get(job.jobId)?.status; if (latestStatus === "cancelled") { return; @@ -810,7 +833,7 @@ export class WorkflowPool extends TypedEventTarget { } finally { this.activeJobs.delete(job.jobId); - console.log(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); + this.debugLog(`[runJob.finally] Job ${job.jobId.substring(0, 8)}... completed, calling processQueue()`); void this.processQueue(); } } diff --git a/dist/pool/WorkflowPool.js.map b/dist/pool/WorkflowPool.js.map index 3805aa8..d4ecfdc 100644 --- a/dist/pool/WorkflowPool.js.map +++ b/dist/pool/WorkflowPool.js.map @@ -1 +1 @@ -{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WorkflowPool.js","sourceRoot":"","sources":["../../src/pool/WorkflowPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/client/ClientManager.d.ts b/dist/pool/client/ClientManager.d.ts index 8130425..cbfc1f4 100644 --- a/dist/pool/client/ClientManager.d.ts +++ b/dist/pool/client/ClientManager.d.ts @@ -26,6 +26,7 @@ export declare class ClientManager extends TypedEventTarget { - console.log(`[ClientManager.release] Releasing client ${chosen.id} for job ${job.jobId}. Setting busy: false.`); + if (this.debugLogs) { + console.log(`[ClientManager.release] Releasing client ${chosen.id} for job ${job.jobId}. Setting busy: false.`); + } chosen.busy = false; if (opts?.success) { const wasBlocked = this.strategy.isWorkflowBlocked?.(chosen, job.workflowHash) ?? false; diff --git a/dist/pool/client/ClientManager.js.map b/dist/pool/client/ClientManager.js.map index d706a2d..beba3c0 100644 --- a/dist/pool/client/ClientManager.js.map +++ b/dist/pool/client/ClientManager.js.map @@ -1 +1 @@ -{"version":3,"file":"ClientManager.js","sourceRoot":"","sources":["../../../src/pool/client/ClientManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ClientManager.js","sourceRoot":"","sources":["../../../src/pool/client/ClientManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAuB/D,MAAM,OAAO,aAAc,SAAQ,gBAAsC;IAC/D,OAAO,GAAoB,EAAE,CAAC;IAC9B,QAAQ,CAAmB;IAC3B,mBAAmB,GAA0B,IAAI,CAAC;IACzC,qBAAqB,CAAS;IAC9B,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC;IAErE;;;;OAIG;IACc,yBAAyB,GAAW,KAAK,CAAC;IAE3D;;;;;;;OAOG;IACH,YAAY,QAA0B,EAAE,IAOvC;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,qBAAqB,GAAG,IAAI,EAAE,qBAAqB,IAAI,KAAK,CAAC,CAAC,sBAAsB;IAC3F,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,YAAoB;QACxD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,YAAoB;QAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAmB;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAgB;QAC9B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAkB;YAC7B,MAAM;YACN,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,KAAK;YACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,kBAAkB,EAAE,IAAI,GAAG,EAAE;SAC9B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC7B,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YACvB,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE;gBACjD,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;aAC3F,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC;YACzB,OAAO,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAEpE,qEAAqE;YACrE,IAAI,OAAO,CAAC,kBAAkB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,EAAE,CAAC;gBAC7E,OAAO,CAAC,IAAI,CACV,0BAA0B,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;oBAChI,6BAA6B,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,EAAE,CACpF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE;gBACjD,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;aACnE,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,MAAqB;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wDAAwD;QACxD,IAAI,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,eAAe,CAAC,MAAqB,EAAE,GAAc;QAC1D,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAClG,OAAO,KAAK,CAAC,CAAC,uDAAuD;QACvE,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACtD,OAAO,KAAK,CAAC,CAAC,mDAAmD;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,wBAAwB;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAc,EAAE,gBAAyB;QAC7C,IAAI,MAAiC,CAAC;QAEtC,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC;YACpE,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxF,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,CAAC,IAA4B,EAAE,EAAE;gBACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,4CAA4C,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,KAAK,wBAAwB,CAAC,CAAC;gBAClH,CAAC;gBACD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;gBACpB,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;oBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;oBACxF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;oBAC1F,IAAI,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;wBAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE;oBACjD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;iBAC1E,CAAC,CAAC,CAAC;YACN,CAAC;SACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAgB,EAAE,GAAc,EAAE,KAAc;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;QACxF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;QACvF,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,cAAc,EAAE;YACjD,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;SAC5F,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,CAAC,kBAAkB;QAC5B,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,yFAAyF;YACzF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,iFAAiF;oBACjF,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAChC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,0DAA0D;oBAC1D,OAAO,CAAC,IAAI,CAAC,kDAAkD,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;oBACrF,8EAA8E;oBAC9E,+DAA+D;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;CACF"} \ No newline at end of file diff --git a/dist/pool/index.d.ts b/dist/pool/index.d.ts index a0c8b65..3e3ec5e 100644 --- a/dist/pool/index.d.ts +++ b/dist/pool/index.d.ts @@ -7,5 +7,4 @@ export { MemoryQueueAdapter } from "./queue/adapters/memory.js"; export type { FailoverStrategy } from "./failover/Strategy.js"; export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js"; export type { JobProfileStats, NodeExecutionProfile } from "./profiling/JobProfiler.js"; -export { hashWorkflow } from "./utils/hash.js"; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/pool/index.d.ts.map b/dist/pool/index.d.ts.map index 26857ce..9606eeb 100644 --- a/dist/pool/index.d.ts.map +++ b/dist/pool/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/dist/pool/index.js b/dist/pool/index.js index e262ff1..ea3d8d8 100644 --- a/dist/pool/index.js +++ b/dist/pool/index.js @@ -1,5 +1,4 @@ export { WorkflowPool } from "./WorkflowPool.js"; export { MemoryQueueAdapter } from "./queue/adapters/memory.js"; export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js"; -export { hashWorkflow } from "./utils/hash.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/pool/index.js.map b/dist/pool/index.js.map index 3c21edd..9eb6979 100644 --- a/dist/pool/index.js.map +++ b/dist/pool/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index cd273c8..98f04c8 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ }, "license": "MIT", "dependencies": { + "sharp": "^0.34.4", "ws": "8.18.3" }, "devDependencies": { diff --git a/scripts/smart-pool-test.ts b/scripts/smart-pool-test.ts index 29bdd84..03c1774 100644 --- a/scripts/smart-pool-test.ts +++ b/scripts/smart-pool-test.ts @@ -2,10 +2,25 @@ import { SmartPool } from "../src/pool/SmartPool.js"; import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" with { type: "json" }; import EditGraph from "./workflows/quick-edit-test.json" with { type: "json" }; import { Workflow } from "../src/workflow.js"; +import sharp from "sharp"; const GEN_HOSTS = ["http://afterpic-comfy-aero16:8188"]; const EDIT_HOSTS = ["http://afterpic-comfy-igor:8188", "http://afterpic-comfy-domi:8188"]; +// Resolution pool for truly random aspect ratios +const RESOLUTIONS = [ + { w: 256, h: 256 }, + { w: 512, h: 384 }, + { w: 768, h: 512 }, + { w: 1024, h: 256 }, + { w: 512, h: 768 }, + { w: 384, h: 512 } +]; + +function pickRandomResolution() { + return RESOLUTIONS[Math.floor(Math.random() * RESOLUTIONS.length)]; +} + // Create an instance of SmartPool const smartPool = new SmartPool([ ...GEN_HOSTS, @@ -26,9 +41,12 @@ await smartPool.connect(); console.log("Connected"); -// Main test loop +// Main test loop - track results for summary let iteration = 0; -while (iteration < 2) { +const promises: Promise[] = []; +const results: Array<{ iteration: number; expected: string; actual: string; passed: boolean }> = []; + +while (iteration < 6) { iteration += 1; console.log(`\n--- Workflow Execution Iteration ${iteration} ---\n`); const workflow = Workflow.from(GenerationGraph, { autoHash: false }); @@ -38,27 +56,102 @@ while (iteration < 2) { // Positive prompt input workflow.input("1", "value", "1girl, blonde hair, blue eyes, large eyes, looking back, solo, see-through dress, backlight, windy, detailed background, flower field, moonlit, highres, masterpiece, best quality"); workflow.input("2", "value", "lowres, bad anatomy, blurry"); - workflow.input("3", "width", 512); - workflow.input("3", "height", 512); - workflow.input("10", "steps", 30); + + // Randomize resolution for each iteration + const { w: width, h: height } = pickRandomResolution(); + workflow.input("3", "width", width); + workflow.input("3", "height", height); + workflow.input("10", "steps", 5); workflow.input("10", "seed", -1); workflow.output("final_image", "12"); - const result = smartPool.executeImmediate(workflow, { + console.log(`[Iteration ${iteration}] Submitting workflow with dimensions: ${width}x${height}`); + + const promise = smartPool.executeImmediate(workflow, { preferableClientIds: [...GEN_HOSTS] }); - result.then(value => { - console.log("Workflow execution complete", value.imageBlob); + // Capture iteration in closure to avoid reference issue + const currentIteration = iteration; + const expectedWidth = width; + const expectedHeight = height; + + promise.then(async (value) => { + const images = value.images || []; + const imageBlob = value.imageBlob; + console.log(`[Iteration ${currentIteration}] Workflow execution complete - Got ${images.length} image(s)`); + if (imageBlob) { + console.log(`[Iteration ${currentIteration}] Image size: ${imageBlob.size} bytes, type: ${imageBlob.type}`); + // Use sharp to read image dimensions + const buffer = Buffer.from(await imageBlob.arrayBuffer()); + const metadata = await sharp(buffer).metadata(); + console.log(`[Iteration ${currentIteration}] Image dimensions: ${metadata.width}x${metadata.height}`); + + // Verify this is the expected size + const isCorrect = metadata.width === expectedWidth && metadata.height === expectedHeight; + const expected = `${expectedWidth}x${expectedHeight}`; + const actual = `${metadata.width}x${metadata.height}`; + + results.push({ + iteration: currentIteration, + expected, + actual, + passed: isCorrect + }); + + if (isCorrect) { + console.log(`[Iteration ${currentIteration}] ✓ CORRECT dimensions received`); + } else { + console.log(`[Iteration ${currentIteration}] ✗ WRONG dimensions! Expected ${expected}, got ${actual}`); + } + } }).catch(reason => { - console.error("Workflow execution failed", reason); - }) + console.error(`[Iteration ${currentIteration}] Workflow execution failed`, reason.message); + results.push({ + iteration: currentIteration, + expected: `${expectedWidth}x${expectedHeight}`, + actual: "FAILED", + passed: false + }); + }); + + promises.push(promise); + + // Stagger job submissions by 200ms + await new Promise(resolve => setTimeout(resolve, 200)); } -await new Promise(resolve => { - setTimeout(resolve, 5000); -}) +// Wait for all promises to settle before shutdown +await Promise.allSettled(promises); + +// Small delay to ensure all cleanup is done +await new Promise(resolve => setTimeout(resolve, 1000)); + +smartPool.shutdown(); +console.log("Shutdown complete"); + +// Print final summary +console.log("\n" + "=".repeat(70)); +console.log("TEST SUMMARY"); +console.log("=".repeat(70)); +console.log(`Total Iterations: ${results.length}`); +console.log(`Passed: ${results.filter(r => r.passed).length}`); +console.log(`Failed: ${results.filter(r => !r.passed).length}`); +console.log(""); + +if (results.length > 0) { + console.log("Detailed Results:"); + console.log("-".repeat(70)); + for (const result of results) { + const status = result.passed ? "✓ PASS" : "✗ FAIL"; + console.log(` [Iteration ${result.iteration}] ${status} | Expected: ${result.expected} | Got: ${result.actual}`); + } + console.log("-".repeat(70)); + + const passRate = ((results.filter(r => r.passed).length / results.length) * 100).toFixed(1); + console.log(`Pass Rate: ${passRate}%`); +} +console.log("=".repeat(70) + "\n"); -// // Shutdown the pool -// smartPool.shutdown(); -// console.log("Shutdown complete"); \ No newline at end of file +// Exit with appropriate code +process.exit(results.every(r => r.passed) ? 0 : 1); \ No newline at end of file diff --git a/src/call-wrapper.ts b/src/call-wrapper.ts index e6ff950..6db477e 100644 --- a/src/call-wrapper.ts +++ b/src/call-wrapper.ts @@ -481,6 +481,8 @@ export class CallWrapper } this.promptId = job.prompt_id; + console.log(`[CallWrapper] Enqueued with promptId=${this.promptId?.substring(0, 8)}...`); + console.log(`[CallWrapper] Full job object:`, JSON.stringify({ promptId: job.prompt_id }, null, 2)); this.emitLog("CallWrapper.enqueueJob", "queued", { prompt_id: this.promptId }); this.onPendingFn?.(this.promptId); this.onDisconnectedHandlerOffFn = this.client.on("disconnected", () => { @@ -719,12 +721,31 @@ export class CallWrapper } const reverseOutputMapped = this.reverseMapOutputKeys(); + const mapOutputKeys = this.prompt.mapOutputKeys; - this.progressHandlerOffFn = this.client.on("progress", (ev) => this.handleProgress(ev, promptId)); - this.previewHandlerOffFn = this.client.on("b_preview", (ev) => this.onPreviewFn?.(ev.detail, this.promptId)); + console.log(`[CallWrapper] handleJobExecution for ${promptId.substring(0, 8)}... - mapOutputKeys:`, mapOutputKeys, "reverseOutputMapped:", reverseOutputMapped); + + this.progressHandlerOffFn = this.client.on("progress", (ev) => this.handleProgress(ev, promptId)); + this.previewHandlerOffFn = this.client.on("b_preview", (ev) => { + // Note: b_preview events don't include prompt_id. They're scoped per connection. + // If multiple jobs use the same connection, they will all receive preview events. + // This is a limitation of the ComfyUI protocol - previews are not separated by prompt_id. + this.onPreviewFn?.(ev.detail, this.promptId); + }); // Also forward preview with metadata if available - const offPreviewMeta = this.client.on("b_preview_meta", (ev) => this.onPreviewMetaFn?.(ev.detail as any, this.promptId)); + const offPreviewMeta = this.client.on("b_preview_meta", (ev) => { + // Validate prompt_id from metadata if available to prevent cross-user preview leakage + const metadata = ev.detail.metadata as any; + const metaPromptId = metadata?.prompt_id; + + if (metaPromptId && metaPromptId !== promptId) { + console.log(`[CallWrapper] Ignoring b_preview_meta for wrong prompt. Expected ${promptId.substring(0, 8)}..., got ${metaPromptId.substring(0, 8)}...`); + return; + } + + this.onPreviewMetaFn?.(ev.detail as any, this.promptId); + }); const prevCleanup = this.previewHandlerOffFn; this.previewHandlerOffFn = () => { @@ -734,17 +755,23 @@ export class CallWrapper const totalOutput = Object.keys(reverseOutputMapped).length; let remainingOutput = totalOutput; + console.log(`[CallWrapper] totalOutput=${totalOutput}, remainingOutput=${remainingOutput}`); + const executionHandler = (ev: CustomEvent) => { - if (ev.detail.prompt_id !== promptId) return; + console.log(`[CallWrapper.executionHandler] received executed event for promptId=${ev.detail.prompt_id?.substring(0, 8)}..., node=${ev.detail.node}, waitingFor=${promptId.substring(0, 8)}...`); + + const eventPromptId = ev.detail.prompt_id; + const isCorrectPrompt = eventPromptId === promptId; + + // STRICT: Only accept events where prompt_id matches our expected promptId + if (!isCorrectPrompt) { + console.log(`[CallWrapper.executionHandler] REJECTED - prompt_id mismatch (expected ${promptId.substring(0, 8)}..., got ${eventPromptId?.substring(0, 8)}...)`); + return; + } const outputKey = reverseOutputMapped[ev.detail.node as keyof typeof this.prompt.mapOutputKeys]; - this.emitLog("CallWrapper.executionHandler", "executed event received", { - node: ev.detail.node, - outputKey, - remainingBefore: remainingOutput, - isTrackedOutput: !!outputKey - }); + console.log(`[CallWrapper] executionHandler - promptId: ${promptId.substring(0, 8)}... (event says: ${ev.detail.prompt_id?.substring(0, 8)}...), node: ${ev.detail.node}, outputKey: ${outputKey}, output:`, JSON.stringify(ev.detail.output)); if (outputKey) { this.output[outputKey as keyof PromptBuilder["mapOutputKeys"]] = ev.detail.output; @@ -756,13 +783,10 @@ export class CallWrapper this.onOutputFn?.(ev.detail.node as string, ev.detail.output, this.promptId); } - this.emitLog("CallWrapper.executionHandler", "after processing executed event", { - remainingAfter: remainingOutput, - willTriggerCompletion: remainingOutput === 0 - }); + console.log(`[CallWrapper] afterProcessing - remainingAfter: ${remainingOutput}, willTriggerCompletion: ${remainingOutput === 0}`); if (remainingOutput === 0) { - this.emitLog("CallWrapper.handleJobExecution", "all outputs collected"); + console.log(`[CallWrapper] all outputs collected for ${promptId.substring(0, 8)}...`); // Mark as successfully completing BEFORE cleanup to prevent race condition with disconnection handler this.isCompletingSuccessfully = true; this.cleanupListeners("all outputs collected"); @@ -772,30 +796,105 @@ export class CallWrapper }; const executedEnd = async () => { - this.emitLog("CallWrapper.executedEnd", "execution_success fired", { - promptId, - remainingOutput, - totalOutput - }); + console.log(`[CallWrapper] execution_success fired for ${promptId.substring(0, 8)}..., remainingOutput=${remainingOutput}, totalOutput=${totalOutput}`); + + // If we've already marked this as successfully completing, don't fail it again + if (this.isCompletingSuccessfully) { + console.log(`[CallWrapper] Already marked as successfully completing, ignoring this execution_success`); + return; + } + + if (remainingOutput === 0) { + console.log(`[CallWrapper] all outputs already collected, nothing to do`); + return; + } + // Wait briefly for outputs that might be arriving due to prompt ID mismatch + await new Promise(resolve => setTimeout(resolve, 100)); + + console.log(`[CallWrapper] After wait - remainingOutput=${remainingOutput}, this.output keys:`, Object.keys(this.output)); + + // Check if outputs arrived while we were waiting if (remainingOutput === 0) { - this.emitLog("CallWrapper.executedEnd", "all outputs already collected, nothing to do"); + console.log(`[CallWrapper] Outputs arrived during wait - marking as complete`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - outputs complete after wait"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); + return; + } + + // Check if we have collected all outputs (even if prompt ID mismatch) + const hasAllOutputs = Object.keys(reverseOutputMapped).every(nodeId => (this.output as any)[reverseOutputMapped[nodeId]] !== undefined); + if (hasAllOutputs) { + console.log(`[CallWrapper] Have all required outputs despite promptId mismatch - marking as complete`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - outputs complete despite promptId mismatch"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); return; } - const hisData = await this.client.ext.history.getHistory(promptId); - if (hisData?.status?.completed) { - const outputCount = Object.keys(hisData.outputs ?? {}).length; - if (outputCount > 0 && outputCount - totalOutput === 0) { - this.emitLog("CallWrapper.executedEnd", "outputs equal total after history check -> ignore false end"); + // Try to fetch from history with retry logic + let hisData = null; + for (let retries = 0; retries < 5; retries++) { + hisData = await this.client.ext.history.getHistory(promptId); + console.log(`[CallWrapper] History query result for ${promptId.substring(0, 8)}... (attempt ${retries + 1}) - status:`, hisData?.status, 'outputs:', Object.keys(hisData?.outputs ?? {}).length); + + if (hisData?.status?.completed && hisData.outputs) { + console.log(`[CallWrapper] Found completed job in history with outputs - attempting to populate from history`); + break; + } + + if (retries < 4) { + console.log(`[CallWrapper] History not ready yet, waiting 100ms before retry...`); + await new Promise(resolve => setTimeout(resolve, 100)); + } + } + + if (hisData?.status?.completed && hisData.outputs) { + + // Try to extract outputs from history data + let populatedCount = 0; + for (const [nodeIdStr, nodeOutput] of Object.entries(hisData.outputs)) { + const nodeId = parseInt(nodeIdStr, 10); + const outputKey = reverseOutputMapped[nodeId]; + + if (outputKey && nodeOutput) { + // nodeOutput is typically { images: [...] } or similar - take the first property + const outputValue = Array.isArray(nodeOutput) ? nodeOutput[0] : Object.values(nodeOutput)[0]; + if (outputValue !== undefined) { + this.output[outputKey as keyof PromptBuilder["mapOutputKeys"]] = outputValue; + this.onOutputFn?.(outputKey, outputValue, this.promptId); + populatedCount++; + remainingOutput--; + console.log(`[CallWrapper] Populated ${outputKey} from history`); + } + } + } + + if (remainingOutput === 0) { + console.log(`[CallWrapper] Successfully populated all outputs from history for ${promptId.substring(0, 8)}...`); + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - populated from history"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); return; } + + if (populatedCount > 0) { + console.log(`[CallWrapper] Populated ${populatedCount} outputs from history (remainingOutput=${remainingOutput})`); + if (remainingOutput === 0) { + this.isCompletingSuccessfully = true; + this.cleanupListeners("executedEnd - all outputs from history"); + this.onFinishedFn?.(this.output, this.promptId); + this.resolveJob(this.output); + return; + } + } } - this.emitLog("CallWrapper.executedEnd", "execution failed due to missing outputs", { - remainingOutput, - totalOutput - }); + console.log(`[CallWrapper] execution failed due to missing outputs - remainingOutput=${remainingOutput}, totalOutput=${totalOutput}`); this.emitFailure(new ExecutionFailedError("Execution failed"), this.promptId); this.resolvePromptLoad(false); this.cleanupListeners("executedEnd missing outputs"); @@ -804,6 +903,7 @@ export class CallWrapper this.executionEndSuccessOffFn = this.client.on("execution_success", executedEnd); this.executionHandlerOffFn = this.client.on("executed", executionHandler); + console.log(`[CallWrapper] Registered listeners for ${promptId.substring(0, 8)}... - executionHandler and executedEnd`); this.errorHandlerOffFn = this.client.on("execution_error", (ev) => this.handleError(ev, promptId)); this.interruptionHandlerOffFn = this.client.on("execution_interrupted", (ev) => { if (ev.detail.prompt_id !== promptId) return; diff --git a/src/pool/SmartPool.ts b/src/pool/SmartPool.ts index b39c9d7..a4d7ac4 100644 --- a/src/pool/SmartPool.ts +++ b/src/pool/SmartPool.ts @@ -3,6 +3,7 @@ import { JobId, JobRecord } from "./types/job.js"; import { hashWorkflow } from "src/pool/utils/hash.js"; import { ComfyApi } from "src/client.js"; import { Workflow } from "src/workflow.js"; +import { PromptBuilder } from "src/prompt-builder.js"; interface SmartPoolOptions { connectionTimeoutMs: number; @@ -235,85 +236,207 @@ export class SmartPool { workflowHash = workflowHash || workflow.structureHash || ""; - this.emit({ - type: "workflow:executeImmediate", - promptId: "", - workflowHash, - clientId: selectedClient.apiHost - }); + // Queue the workflow and get the prompt_id + // Build PromptBuilder from the workflow to get proper prompt format + const workflowJson = (workflow as any).json || workflow; + const outputNodeIds = (workflow as any).outputNodeIds || []; + + // Auto-randomize any node input field named 'seed' whose value is -1 (common ComfyUI convention) + const autoSeeds: Record = {}; + try { + for (const [nodeId, node] of Object.entries(workflowJson)) { + const n: any = node; + if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { + if (n.inputs.seed === -1) { + const val = Math.floor(Math.random() * 2_147_483_647); // 32-bit positive range typical for seeds + n.inputs.seed = val; + autoSeeds[nodeId] = val; + } + } + } + } catch { /* non-fatal */ } + + const pb = new PromptBuilder(workflowJson as any, [], outputNodeIds as any); + + // Map output nodes + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId as any, nodeId) as any; + } + + const promptJson = pb.prompt; + console.log(`[SmartPool] Queuing workflow with prompt containing nodes:`, Object.keys(promptJson || {}).slice(0, 5)); + + try { + const queueResponse = await selectedClient.ext.queue.appendPrompt(promptJson); + const promptId = queueResponse.prompt_id; - // Execute the workflow immediately on the selected client - const job = await workflow.run(selectedClient); + console.log(`[SmartPool] Queued workflow on ${selectedClient.apiHost} with promptId=${promptId.substring(0, 8)}...`); - job.on("start", promptId => { this.emit({ - type: "job:start", + type: "workflow:executeImmediate", promptId, workflowHash, clientId: selectedClient.apiHost }); - }); - job.on("progress", info => { - this.emit({ - type: "job:progress", - promptId: info.prompt_id, - workflowHash, - clientId: selectedClient.apiHost, - data: info - }); - }); + // Simple execution wrapper: collect outputs from executed events and handle completion + const result = await this.waitForExecutionCompletion(selectedClient, promptId, workflow); - job.on("progress_pct", (pct, info) => { - this.emit({ - type: "job:progress_pct", - promptId: info.prompt_id, - workflowHash, - clientId: selectedClient.apiHost, - data: { pct, info } - }); - }); + console.log(`[SmartPool] Job completed with promptId: ${promptId.substring(0, 8)}...`); - job.on("preview_meta", data => { - this.emit({ - type: "job:preview_meta", - promptId: data.metadata.prompt_id, - workflowHash, - clientId: selectedClient.apiHost, - data - }); - }); - - job.on("finished", (data, promptId) => { - this.emit({ - type: "job:finished", - promptId, - workflowHash, - clientId: selectedClient.apiHost, - data - }); - }); + const images = []; + + // Fetch outputs using the authoritative prompt ID + try { + const historyData = await selectedClient.ext.history.getHistory(promptId); + if (historyData && historyData.outputs) { + for (const nodeId of Object.keys(historyData.outputs)) { + const nodeOutput = historyData.outputs[nodeId]; + if (nodeOutput.images && nodeOutput.images.length > 0) { + console.log(`[SmartPool] Found output from history node ${nodeId}: ${nodeOutput.images[0].filename}`); + images.push(...nodeOutput.images); + break; + } + } + } + } catch (e) { + console.log(`[SmartPool] Failed to fetch history: ${e}`); + } + + // Fallback to result object if history didn't give us images + if (images.length === 0) { + console.log(`[SmartPool] Falling back to result object`); + const aliases = result._aliases || {}; + for (const aliasKey of Object.keys(aliases)) { + const aliasObject = result[aliases[aliasKey]]; + if (aliasObject && aliasObject.images) { + images.push(...aliasObject.images); + } + } + } - const result = await job.done(); + // Read images from the client that executed the workflow + const imageBlob = await selectedClient.ext.file.getImage(images[0]); + console.log(`[SmartPool] Fetched image blob for file: ${JSON.stringify(images[0])}`); - const images = []; + console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); - const aliases = result._aliases || {}; - for (const aliasKey of Object.keys(aliases)) { - const aliasObject = result[aliases[aliasKey]]; - if (aliasObject && aliasObject.images) { - images.push(...aliasObject.images); - } + return { ...result, images, imageBlob }; + } catch (err) { + console.error(`[SmartPool] Failed to execute workflow:`, err); + throw err; } + } - // Read images from the client that executed the workflow - const imageBlob = await selectedClient.ext.file.getImage(images[0]); + private async waitForExecutionCompletion(client: ComfyApi, promptId: string, workflow: Workflow): Promise { + return new Promise((resolve, reject) => { + const result: any = { + _promptId: promptId, + _aliases: {}, + _nodes: [] + }; + + const collectedNodes = new Set(); + + const executedHandler = (ev: CustomEvent) => { + const eventPromptId = ev.detail.prompt_id; + + // Only process events for our specific prompt + if (eventPromptId !== promptId) { + return; + } - console.log(`Extracted ${images.length} images from workflow result.`); + const nodeId = ev.detail.node; + const output = ev.detail.output; + + // Store output keyed by node ID + result[nodeId] = output; + collectedNodes.add(nodeId); + console.log(`[SmartPool.waitForExecutionCompletion] Collected output from node: ${nodeId}`); + }; + + const executionSuccessHandler = async (ev: CustomEvent) => { + const eventPromptId = ev.detail.prompt_id; + + // Only process events for our specific prompt + if (eventPromptId !== promptId) { + return; + } - console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); + console.log(`[SmartPool.waitForExecutionCompletion] execution_success fired for ${promptId.substring(0, 8)}...`); + + // Try to fetch complete outputs from history + for (let retries = 0; retries < 5; retries++) { + try { + const historyData = await client.ext.history.getHistory(promptId); + if (historyData?.outputs) { + console.log(`[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt ${retries + 1})`); + + // Populate result from history for any nodes we didn't get from websocket + for (const [nodeIdStr, nodeOutput] of Object.entries(historyData.outputs)) { + const nodeId = parseInt(nodeIdStr, 10).toString(); + + // Only add if we haven't collected this node yet + if (!collectedNodes.has(nodeId) && nodeOutput) { + // Extract the actual output value + const outputValue = Array.isArray(nodeOutput) ? nodeOutput[0] : Object.values(nodeOutput)[0]; + if (outputValue !== undefined) { + result[nodeId] = outputValue; + collectedNodes.add(nodeId); + } + } + } + + // Store collected node IDs + result._nodes = Array.from(collectedNodes); + + cleanup(); + resolve(result); + return; + } + } catch (e) { + // Continue retrying + } - return { ...result, images, imageBlob }; + if (retries < 4) { + await new Promise(r => setTimeout(r, 100)); + } + } + + // Resolve even if we didn't get all outputs + result._nodes = Array.from(collectedNodes); + cleanup(); + resolve(result); + }; + + const executionErrorHandler = (ev: CustomEvent) => { + const eventPromptId = ev.detail.prompt_id; + if (eventPromptId !== promptId) { + return; + } + + console.error(`[SmartPool.waitForExecutionCompletion] Execution error:`, ev.detail); + cleanup(); + reject(new Error(`Execution failed: ${JSON.stringify(ev.detail)}`)); + }; + + const cleanup = () => { + offExecuted?.(); + offExecutionSuccess?.(); + offExecutionError?.(); + clearTimeout(timeoutHandle); + }; + + const offExecuted = client.on("executed", executedHandler as any); + const offExecutionSuccess = client.on("execution_success", executionSuccessHandler as any); + const offExecutionError = client.on("execution_error", executionErrorHandler as any); + + // Timeout after 5 minutes + const timeoutHandle = setTimeout(() => { + cleanup(); + reject(new Error("Execution timeout")); + }, 5 * 60 * 1000); + }); } From bb046051dc7d18836ca3c9da3ef3e8096442cf55 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 07:40:55 -0300 Subject: [PATCH 17/19] Implement poll-based queue processing with idle server detection and reduced logging for long-running deployments --- dist/index.d.ts | 2 +- dist/index.d.ts.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/pool/SmartPool.d.ts | 68 ++- dist/pool/SmartPool.d.ts.map | 2 +- dist/pool/SmartPool.js | 447 +++++++++++++----- dist/pool/SmartPool.js.map | 2 +- dist/pool/index.d.ts | 1 + dist/pool/index.d.ts.map | 2 +- dist/pool/index.js | 1 + dist/pool/index.js.map | 2 +- scripts/smartpool-two-stage-simulation.ts | 398 ++++++++++++++++ simulation_output.txt | 231 ++++++++++ src/index.ts | 2 +- src/pool/SmartPool.ts | 523 +++++++++++++++++----- src/pool/index.ts | 1 + 17 files changed, 1460 insertions(+), 228 deletions(-) create mode 100644 scripts/smartpool-two-stage-simulation.ts create mode 100644 simulation_output.txt diff --git a/dist/index.d.ts b/dist/index.d.ts index 7e0468a..be42d3b 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export type { AugmentNodes, SamplerName, SchedulerName } from "./node-type-hints.js"; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index 331ee2c..ef07d99 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index f71f395..220065c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export { seed } from "./tools.js"; diff --git a/dist/index.js.map b/dist/index.js.map index bc32e2d..7580017 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/pool/SmartPool.d.ts b/dist/pool/SmartPool.d.ts index 9f9923c..761cdb9 100644 --- a/dist/pool/SmartPool.d.ts +++ b/dist/pool/SmartPool.d.ts @@ -2,6 +2,7 @@ import { WorkflowAffinity } from "./types/affinity.js"; import { JobId, JobRecord } from "./types/job.js"; import { ComfyApi } from "src/client.js"; import { Workflow } from "src/workflow.js"; +import { TypedEventTarget } from "src/typed-event-target.js"; interface SmartPoolOptions { connectionTimeoutMs: number; } @@ -16,18 +17,38 @@ interface ClientQueueState { queuedJobs: number; runningJobs: number; } -export declare class SmartPool { +interface SmartPoolEventMap extends Record> { + "job:queued": CustomEvent<{ + job: JobRecord; + }>; + "job:accepted": CustomEvent<{ + job: JobRecord; + }>; + "job:started": CustomEvent<{ + job: JobRecord; + }>; + "job:completed": CustomEvent<{ + job: JobRecord; + }>; + "job:failed": CustomEvent<{ + job: JobRecord; + willRetry?: boolean; + }>; +} +export declare class SmartPool extends TypedEventTarget { clientMap: Map; clientQueueStates: Map; jobStore: Map; affinities: Map; + private queueAdapter; + private processingNextJob; private options; hooks: { any?: (event: PoolEvent) => void; [key: string]: ((event: PoolEvent) => void) | undefined; }; constructor(clients: (ComfyApi | string)[], options?: Partial); - emit(event: PoolEvent): void; + emitLegacy(event: PoolEvent): void; connect(): Promise; shutdown(): void; syncQueueStates(): Promise; @@ -37,9 +58,52 @@ export declare class SmartPool { setAffinity(workflow: object, affinity: Omit): void; getAffinity(workflowHash: string): WorkflowAffinity | undefined; removeAffinity(workflowHash: string): void; + /** + * Enqueue a workflow for execution by the pool. + * Auto-triggers processing via setImmediate (batteries included). + */ + enqueue(workflow: Workflow, opts?: { + preferredClientIds?: string[]; + priority?: number; + }): Promise; + /** + * Entry point for queue processing with deduplication guard. + * Prevents concurrent processing of jobs. + * Poll-based approach: check idle servers, collect compatible jobs, enqueue only when slots available. + */ + private processNextJobQueued; + /** + * Find servers that are currently idle (no running or pending jobs) + */ + private findIdleServers; + /** + * Assign compatible jobs from our queue to idle servers + * Returns number of jobs assigned + */ + private assignJobsToIdleServers; + /** + * Check if a job is compatible with a server + */ + private isJobCompatibleWithServer; + /** + * Enqueue a job on a specific server + * Returns true if successful, false if failed + */ + private enqueueJobOnServer; + /** + * Retrieve images from a completed job's execution. + */ + getJobOutputImages(jobId: JobId, nodeId?: string): Promise>; executeImmediate(workflow: Workflow, opts: { preferableClientIds?: string[]; }): Promise; + /** + * Build the return value for executeImmediate() with images and blob. + */ + private buildExecuteImmediateResult; private waitForExecutionCompletion; } export {}; diff --git a/dist/pool/SmartPool.d.ts.map b/dist/pool/SmartPool.d.ts.map index 04a4775..5ba50d4 100644 --- a/dist/pool/SmartPool.d.ts.map +++ b/dist/pool/SmartPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IAGpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAG7C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAG7D,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAa;IAG5C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAGtD,OAAO,CAAC,OAAO,CAAmB;IAGlC,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACzD,CAAM;gBAEK,OAAO,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAkB/E,IAAI,CAAC,KAAK,EAAE,SAAS;IAUf,OAAO;IA8Cb,QAAQ;IAUF,eAAe;IAqBrB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAKzC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAK3C,SAAS,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAS9E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK/D,cAAc,CAAC,YAAY,EAAE,MAAM;IAI7B,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,GAAG,OAAO,CAAC,GAAG,CAAC;YA2IF,0BAA0B;CAgHzC"} \ No newline at end of file +{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/SmartPool.js b/dist/pool/SmartPool.js index 6bfd62b..7d43671 100644 --- a/dist/pool/SmartPool.js +++ b/dist/pool/SmartPool.js @@ -1,10 +1,13 @@ +import { randomUUID } from "node:crypto"; import { hashWorkflow } from "src/pool/utils/hash.js"; import { ComfyApi } from "src/client.js"; import { PromptBuilder } from "src/prompt-builder.js"; +import { MemoryQueueAdapter } from "./queue/adapters/memory.js"; +import { TypedEventTarget } from "src/typed-event-target.js"; const DEFAULT_SMART_POOL_OPTIONS = { connectionTimeoutMs: 10000 }; -export class SmartPool { +export class SmartPool extends TypedEventTarget { // Clients managed by the pool clientMap = new Map(); // Queue state of pool clients @@ -13,17 +16,24 @@ export class SmartPool { jobStore = new Map(); // Affinities mapping workflow hashes to preferred clients affinities = new Map(); + // Queue adapter for job persistence + queueAdapter; + // Flag to prevent concurrent queue processing + processingNextJob = false; // Pool options options; // Hooks for pool-wide events hooks = {}; constructor(clients, options) { + super(); if (options) { this.options = { ...DEFAULT_SMART_POOL_OPTIONS, ...options }; } else { this.options = DEFAULT_SMART_POOL_OPTIONS; } + // Initialize queue adapter + this.queueAdapter = new MemoryQueueAdapter(); for (const client of clients) { if (typeof client === "string") { const apiClient = new ComfyApi(client); @@ -34,7 +44,7 @@ export class SmartPool { } } } - emit(event) { + emitLegacy(event) { if (this.hooks.any) { this.hooks.any(event); } @@ -103,7 +113,6 @@ export class SmartPool { .map(value => { return new Promise(resolve => { value.getQueue().then(value1 => { - console.log(value1); this.clientQueueStates.set(value.apiHost, { queuedJobs: value1.queue_pending.length, runningJobs: value1.queue_running.length @@ -113,7 +122,6 @@ export class SmartPool { }); }); await Promise.allSettled(promises); - console.log(this.clientQueueStates); } // Add a job record to the pool addJob(jobId, jobRecord) { @@ -143,125 +151,363 @@ export class SmartPool { removeAffinity(workflowHash) { this.affinities.delete(workflowHash); } - async executeImmediate(workflow, opts) { - const candidateClients = []; - let workflowHash = workflow.structureHash; - // Determine candidate clients based on preferred IDs - if (opts.preferableClientIds && opts.preferableClientIds.length > 0) { - for (const clientId of opts.preferableClientIds) { - const client = this.clientMap.get(clientId); - if (client && client.isReady) { - candidateClients.push(client); + /** + * Enqueue a workflow for execution by the pool. + * Auto-triggers processing via setImmediate (batteries included). + */ + async enqueue(workflow, opts) { + const jobId = randomUUID(); + const workflowHash = workflow.structureHash || hashWorkflow(workflow.json || workflow); + const workflowJson = workflow.json || workflow; + const outputNodeIds = workflow.outputNodeIds || []; + const outputAliases = workflow.outputAliases || {}; + // Create job record + const jobRecord = { + jobId, + workflow: workflowJson, + workflowHash, + options: { + maxAttempts: 3, + retryDelayMs: 1000, + priority: opts?.priority ?? 0, + preferredClientIds: opts?.preferredClientIds ?? [], + excludeClientIds: [], + metadata: {} + }, + attempts: 0, + enqueuedAt: Date.now(), + workflowMeta: { + outputNodeIds, + outputAliases + }, + status: "queued" + }; + // Store in job store + this.jobStore.set(jobId, jobRecord); + // Create payload for queue adapter + const payload = jobRecord; + // Enqueue with priority + await this.queueAdapter.enqueue(payload, { + priority: opts?.priority ?? 0 + }); + // Emit queued event + this.dispatchEvent(new CustomEvent("job:queued", { detail: { job: jobRecord } })); + // Auto-trigger queue processing immediately (not via setImmediate, so it processes right away) + setImmediate(() => this.processNextJobQueued()); + return jobId; + } + /** + * Entry point for queue processing with deduplication guard. + * Prevents concurrent processing of jobs. + * Poll-based approach: check idle servers, collect compatible jobs, enqueue only when slots available. + */ + async processNextJobQueued() { + if (this.processingNextJob) { + return; + } + this.processingNextJob = true; + try { + // Continuously sync queue states and process available work + while (true) { + // Update queue states from all clients + await this.syncQueueStates(); + // Find idle servers (not running, not pending) + const idleServers = this.findIdleServers(); + if (idleServers.length === 0) { + // No idle servers, wait a bit then check again + await new Promise(resolve => setTimeout(resolve, 1000)); + continue; } + // Try to assign jobs to idle servers + const jobsAssigned = await this.assignJobsToIdleServers(idleServers); + if (jobsAssigned === 0) { + // No jobs could be assigned, wait then try again + await new Promise(resolve => setTimeout(resolve, 1000)); + continue; + } + // Jobs were assigned, give them time to start then re-check + await new Promise(resolve => setTimeout(resolve, 500)); } } - else { - // Check for affinity based on workflow hash - console.log(`Looking up affinity for workflow hash: ${workflowHash}`); - if (workflowHash) { - const affinity = this.getAffinity(workflowHash); - if (affinity && affinity.preferredClientIds) { - for (const clientId of affinity.preferredClientIds) { - const client = this.clientMap.get(clientId); - if (client && client.isReady) { - candidateClients.push(client); - } - } - } + finally { + this.processingNextJob = false; + } + } + /** + * Find servers that are currently idle (no running or pending jobs) + */ + findIdleServers() { + const idleServers = []; + for (const [clientId, client] of this.clientMap) { + if (!client.isReady) + continue; + const state = this.clientQueueStates.get(clientId); + if (state && state.queuedJobs === 0 && state.runningJobs === 0) { + idleServers.push(client); } } - if (candidateClients.length === 0) { - // Fallback to any available client - for (const client of this.clientMap.values()) { - if (client.isReady) { - candidateClients.push(client); + return idleServers; + } + /** + * Assign compatible jobs from our queue to idle servers + * Returns number of jobs assigned + */ + async assignJobsToIdleServers(idleServers) { + let jobsAssigned = 0; + // Peek at pending jobs + const pendingJobs = await this.queueAdapter.peek(100); + if (pendingJobs.length === 0) { + return 0; + } + const matches = []; + for (const payload of pendingJobs) { + const job = this.jobStore.get(payload.jobId); + if (!job) + continue; + // Find compatible idle server for this job + for (const server of idleServers) { + if (this.isJobCompatibleWithServer(payload, job, server)) { + matches.push({ + payload, + job, + compatibleServer: server + }); + break; // Found a compatible server, move to next job } } } - if (candidateClients.length === 0) { - throw new Error("No available clients match the preferred client IDs"); - } - // For simplicity, pick the first available candidate client - const selectedClient = candidateClients[0]; - workflowHash = workflowHash || workflow.structureHash || ""; - // Queue the workflow and get the prompt_id - // Build PromptBuilder from the workflow to get proper prompt format - const workflowJson = workflow.json || workflow; - const outputNodeIds = workflow.outputNodeIds || []; - // Auto-randomize any node input field named 'seed' whose value is -1 (common ComfyUI convention) - const autoSeeds = {}; - try { - for (const [nodeId, node] of Object.entries(workflowJson)) { - const n = node; - if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { - if (n.inputs.seed === -1) { - const val = Math.floor(Math.random() * 2_147_483_647); // 32-bit positive range typical for seeds - n.inputs.seed = val; - autoSeeds[nodeId] = val; - } + // Sort by selectivity (jobs with fewer compatible servers first) + matches.sort((a, b) => { + const aCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(a.payload, a.job, s)).length; + const bCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(b.payload, b.job, s)).length; + return aCompatCount - bCompatCount; + }); + // Assign jobs to idle servers + const assignedServers = new Set(); + for (const match of matches) { + // Skip if we already assigned to this server + if (assignedServers.has(match.compatibleServer.apiHost)) { + continue; + } + // Reserve this specific job + const reservation = await this.queueAdapter.reserveById(match.job.jobId); + if (!reservation) { + continue; + } + try { + const result = await this.enqueueJobOnServer(match.job, match.compatibleServer); + if (result) { + assignedServers.add(match.compatibleServer.apiHost); + jobsAssigned++; + // Commit to our queue + await this.queueAdapter.commit(reservation.reservationId); + } + else { + // Enqueue failed, retry later + await this.queueAdapter.retry(reservation.reservationId, { delayMs: 1000 }); } } + catch (error) { + // Retry on error + await this.queueAdapter.retry(reservation.reservationId, { delayMs: 1000 }); + } + } + return jobsAssigned; + } + /** + * Check if a job is compatible with a server + */ + isJobCompatibleWithServer(payload, job, server) { + // Check preferred client IDs first + if (payload.options.preferredClientIds && payload.options.preferredClientIds.length > 0) { + return payload.options.preferredClientIds.includes(server.apiHost); } - catch { /* non-fatal */ } - const pb = new PromptBuilder(workflowJson, [], outputNodeIds); - // Map output nodes - for (const nodeId of outputNodeIds) { - pb.setOutputNode(nodeId, nodeId); + // Check workflow affinity + const affinity = this.getAffinity(payload.workflowHash); + if (affinity && affinity.preferredClientIds) { + return affinity.preferredClientIds.includes(server.apiHost); } - const promptJson = pb.prompt; - console.log(`[SmartPool] Queuing workflow with prompt containing nodes:`, Object.keys(promptJson || {}).slice(0, 5)); + // No constraints, compatible with any server + return true; + } + /** + * Enqueue a job on a specific server + * Returns true if successful, false if failed + */ + async enqueueJobOnServer(job, server) { try { - const queueResponse = await selectedClient.ext.queue.appendPrompt(promptJson); - const promptId = queueResponse.prompt_id; - console.log(`[SmartPool] Queued workflow on ${selectedClient.apiHost} with promptId=${promptId.substring(0, 8)}...`); - this.emit({ - type: "workflow:executeImmediate", - promptId, - workflowHash, - clientId: selectedClient.apiHost - }); - // Simple execution wrapper: collect outputs from executed events and handle completion - const result = await this.waitForExecutionCompletion(selectedClient, promptId, workflow); - console.log(`[SmartPool] Job completed with promptId: ${promptId.substring(0, 8)}...`); - const images = []; - // Fetch outputs using the authoritative prompt ID + const workflowJson = job.workflow; + const outputNodeIds = job.workflowMeta?.outputNodeIds || []; + // Auto-randomize any seed fields set to -1 try { - const historyData = await selectedClient.ext.history.getHistory(promptId); - if (historyData && historyData.outputs) { - for (const nodeId of Object.keys(historyData.outputs)) { - const nodeOutput = historyData.outputs[nodeId]; - if (nodeOutput.images && nodeOutput.images.length > 0) { - console.log(`[SmartPool] Found output from history node ${nodeId}: ${nodeOutput.images[0].filename}`); - images.push(...nodeOutput.images); - break; + for (const [_, node] of Object.entries(workflowJson)) { + const n = node; + if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { + if (n.inputs.seed === -1) { + const val = Math.floor(Math.random() * 2_147_483_647); + n.inputs.seed = val; } } } } - catch (e) { - console.log(`[SmartPool] Failed to fetch history: ${e}`); + catch { /* non-fatal */ } + // Build prompt + const pb = new PromptBuilder(workflowJson, [], outputNodeIds); + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId, nodeId); } - // Fallback to result object if history didn't give us images - if (images.length === 0) { - console.log(`[SmartPool] Falling back to result object`); - const aliases = result._aliases || {}; - for (const aliasKey of Object.keys(aliases)) { - const aliasObject = result[aliases[aliasKey]]; - if (aliasObject && aliasObject.images) { - images.push(...aliasObject.images); + const promptJson = pb.prompt; + // Queue on client + const queueResponse = await server.ext.queue.appendPrompt(promptJson); + const promptId = queueResponse.prompt_id; + // Update job record + job.status = "running"; + job.clientId = server.apiHost; + job.promptId = promptId; + job.attempts += 1; + this.dispatchEvent(new CustomEvent("job:accepted", { detail: { job } })); + this.dispatchEvent(new CustomEvent("job:started", { detail: { job } })); + // Run execution in background + this.waitForExecutionCompletion(server, promptId, { json: workflowJson }) + .then((result) => { + job.status = "completed"; + job.result = result; + job.completedAt = Date.now(); + this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + // Trigger next processing since job completed + setImmediate(() => this.processNextJobQueued()); + }) + .catch((error) => { + job.status = "failed"; + job.lastError = error; + job.completedAt = Date.now(); + this.dispatchEvent(new CustomEvent("job:failed", { detail: { job, willRetry: false } })); + // Trigger next processing since job completed + setImmediate(() => this.processNextJobQueued()); + }); + return true; + } + catch (error) { + console.error(`[SmartPool] Failed to enqueue job on ${server.apiHost}:`, error); + return false; + } + } + /** + * Retrieve images from a completed job's execution. + */ + async getJobOutputImages(jobId, nodeId) { + const job = this.jobStore.get(jobId); + if (!job) { + throw new Error(`Job ${jobId} not found`); + } + if (!job.clientId) { + throw new Error(`Job ${jobId} has no client assigned`); + } + if (!job.promptId) { + throw new Error(`Job ${jobId} has no promptId assigned`); + } + const client = this.clientMap.get(job.clientId); + if (!client) { + throw new Error(`Client ${job.clientId} not found`); + } + // Fetch history + const historyData = await client.ext.history.getHistory(job.promptId); + if (!historyData?.outputs) { + return []; + } + const images = []; + // Find images in specified node or first node with images + const outputEntries = Object.entries(historyData.outputs); + for (const [nId, nodeOutput] of outputEntries) { + if (nodeId && nId !== nodeId) { + continue; + } + const output = nodeOutput; + if (output.images && Array.isArray(output.images)) { + for (const imageRef of output.images) { + try { + const blob = await client.ext.file.getImage(imageRef); + images.push({ + filename: imageRef.filename || `image_${nId}`, + blob + }); } + catch (e) { + console.error(`Failed to fetch image from node ${nId}:`, e); + } + } + if (nodeId) { + // Found specified node, stop searching + break; } } - // Read images from the client that executed the workflow - const imageBlob = await selectedClient.ext.file.getImage(images[0]); - console.log(`[SmartPool] Fetched image blob for file: ${JSON.stringify(images[0])}`); - console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); - return { ...result, images, imageBlob }; } - catch (err) { - console.error(`[SmartPool] Failed to execute workflow:`, err); - throw err; + return images; + } + async executeImmediate(workflow, opts) { + // Enqueue with maximum priority + const jobId = await this.enqueue(workflow, { + preferredClientIds: opts.preferableClientIds, + priority: 1000 // High priority for immediate execution + }); + // Wait for job completion via event listener + return new Promise((resolve, reject) => { + const onComplete = (event) => { + const customEvent = event; + if (customEvent.detail.job.jobId === jobId) { + cleanup(); + const job = customEvent.detail.job; + this.buildExecuteImmediateResult(job) + .then(resolve) + .catch(reject); + } + }; + const onFailed = (event) => { + const customEvent = event; + if (customEvent.detail.job.jobId === jobId) { + cleanup(); + reject(new Error(`Job failed: ${JSON.stringify(customEvent.detail.job.lastError)}`)); + } + }; + let cleanup = () => { + this.removeEventListener("job:completed", onComplete); + this.removeEventListener("job:failed", onFailed); + clearTimeout(timeoutHandle); + }; + this.addEventListener("job:completed", onComplete); + this.addEventListener("job:failed", onFailed); + // Timeout after 5 minutes + const timeoutHandle = setTimeout(() => { + cleanup(); + reject(new Error("Execution timeout")); + }, 5 * 60 * 1000); + }); + } + /** + * Build the return value for executeImmediate() with images and blob. + */ + async buildExecuteImmediateResult(job) { + const images = []; + let imageBlob; + // Fetch images from job + try { + const jobImages = await this.getJobOutputImages(job.jobId); + for (const img of jobImages) { + images.push({ + filename: img.filename + }); + imageBlob = img.blob; + } + } + catch (e) { + console.log(`[SmartPool] Failed to fetch images: ${e}`); } + return { + ...job.result, + images, + imageBlob, + _promptId: job.promptId + }; } async waitForExecutionCompletion(client, promptId, workflow) { return new Promise((resolve, reject) => { @@ -282,7 +528,6 @@ export class SmartPool { // Store output keyed by node ID result[nodeId] = output; collectedNodes.add(nodeId); - console.log(`[SmartPool.waitForExecutionCompletion] Collected output from node: ${nodeId}`); }; const executionSuccessHandler = async (ev) => { const eventPromptId = ev.detail.prompt_id; @@ -290,13 +535,11 @@ export class SmartPool { if (eventPromptId !== promptId) { return; } - console.log(`[SmartPool.waitForExecutionCompletion] execution_success fired for ${promptId.substring(0, 8)}...`); // Try to fetch complete outputs from history for (let retries = 0; retries < 5; retries++) { try { const historyData = await client.ext.history.getHistory(promptId); if (historyData?.outputs) { - console.log(`[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt ${retries + 1})`); // Populate result from history for any nodes we didn't get from websocket for (const [nodeIdStr, nodeOutput] of Object.entries(historyData.outputs)) { const nodeId = parseInt(nodeIdStr, 10).toString(); diff --git a/dist/pool/SmartPool.js.map b/dist/pool/SmartPool.js.map index 401e406..eaad158 100644 --- a/dist/pool/SmartPool.js.map +++ b/dist/pool/SmartPool.js.map @@ -1 +1 @@ -{"version":3,"file":"SmartPool.js","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SmartPool.js","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/index.d.ts b/dist/pool/index.d.ts index 3e3ec5e..4921873 100644 --- a/dist/pool/index.d.ts +++ b/dist/pool/index.d.ts @@ -1,4 +1,5 @@ export { WorkflowPool } from "./WorkflowPool.js"; +export { SmartPool } from "./SmartPool.js"; export type { WorkflowPoolOpts } from "./WorkflowPool.js"; export type { WorkflowPoolEventMap } from "./types/events.js"; export type { JobRecord, JobStatus, WorkflowJobOptions } from "./types/job.js"; diff --git a/dist/pool/index.d.ts.map b/dist/pool/index.d.ts.map index 9606eeb..bf3fa70 100644 --- a/dist/pool/index.d.ts.map +++ b/dist/pool/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/dist/pool/index.js b/dist/pool/index.js index ea3d8d8..f631bf7 100644 --- a/dist/pool/index.js +++ b/dist/pool/index.js @@ -1,4 +1,5 @@ export { WorkflowPool } from "./WorkflowPool.js"; +export { SmartPool } from "./SmartPool.js"; export { MemoryQueueAdapter } from "./queue/adapters/memory.js"; export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/pool/index.js.map b/dist/pool/index.js.map index 9eb6979..3920f1d 100644 --- a/dist/pool/index.js.map +++ b/dist/pool/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"} \ No newline at end of file diff --git a/scripts/smartpool-two-stage-simulation.ts b/scripts/smartpool-two-stage-simulation.ts new file mode 100644 index 0000000..0a2a958 --- /dev/null +++ b/scripts/smartpool-two-stage-simulation.ts @@ -0,0 +1,398 @@ +import { SmartPool, JobRecord, Workflow } from "../src/index.ts"; +import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" assert { type: "json" }; +import EditGraph from "./workflows/quick-edit-test.json" assert { type: "json" }; +import { delay } from "../src/tools.ts"; +import { log, pickRandom, uploadImage, nextSeed, randomInt } from "./simulator/helpers.ts"; +import { buildEditWorkflow, buildGenerationWorkflow } from "./simulator/workflows.ts"; +import { hashWorkflow } from "../src/pool/utils/hash.ts"; + +const DEFAULT_HOSTS = [ + "http://afterpic-comfy-igor:8188", + "http://afterpic-comfy-aero16:8188", + "http://afterpic-comfy-domi:8188" +]; + +const GEN_HOST = "http://afterpic-comfy-aero16:8188"; +const EDIT_HOSTS = ["http://afterpic-comfy-igor:8188", "http://afterpic-comfy-domi:8188"]; + +const hosts = process.env.TWO_STAGE_HOSTS + ? process.env.TWO_STAGE_HOSTS.split(",") + .map((h) => h.trim()) + .filter(Boolean) + : DEFAULT_HOSTS; + +if (hosts.length === 0) { + console.error("No hosts configured. Provide TWO_STAGE_HOSTS or ensure defaults are reachable."); + process.exit(1); +} + +const runtimeMs = Number.isFinite(Number(process.env.TWO_STAGE_RUNTIME_MS)) + ? Number(process.env.TWO_STAGE_RUNTIME_MS) + : 6 * 60 * 60 * 1000; // 6 hours + +let minDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MIN_DELAY_MS)) + ? Number(process.env.TWO_STAGE_MIN_DELAY_MS) + : 1000; // 1 second + +let maxDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MAX_DELAY_MS)) + ? Number(process.env.TWO_STAGE_MAX_DELAY_MS) + : 5000; // 5 seconds + +if (minDelayMs > maxDelayMs) { + console.warn(`Swapping min/max delay: ${minDelayMs} > ${maxDelayMs}`); + const tmp = minDelayMs; + minDelayMs = maxDelayMs; + maxDelayMs = tmp; +} + +const generationPrompts = (process.env.TWO_STAGE_GEN_PROMPTS || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (generationPrompts.length === 0) { + generationPrompts.push( + "cinematic portrait of a spacefarer gazing at a nebula", + "lush forest clearing at dawn with crystalline waterfalls and ethereal wildlife", + "retro-futuristic city skyline at sunset with hovering ships", + "battle-ready mage summoning luminous glyphs in a ruined cathedral", + "steampunk explorer overlooking a floating archipelago", + "mythic beast emerging from misty mountains", + "mecha pilot preparing for launch on an illuminated runway", + "ancient library guarded by arcane spirits" + ); +} + +const generationNegatives = (process.env.TWO_STAGE_GEN_NEGATIVES || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (generationNegatives.length === 0) { + generationNegatives.push( + "lowres, blurry, bad anatomy, extra limbs, watermark, text, signature", + "poor lighting, washed out colors, distorted perspective, nsfw", + "cropped face, missing fingers, artifacts, posterization", + "muted colors, flat lighting, repetitive patterns" + ); +} + +const editPrompts = (process.env.TWO_STAGE_EDIT_PROMPTS || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (editPrompts.length === 0) { + editPrompts.push( + "Shift to a nighttime scene with glowing lanterns and gentle rain, add reflective puddles", + "Transform into a winter landscape with snowfall and frosted trees, keep main subject", + "Reimagine as a bustling cyberpunk alley filled with holographic signs and neon rain", + "Convert the environment to a tranquil seaside at sunrise with warm golden lighting", + "Reframe as an autumn festival with floating lanterns and soft embers", + "Turn into a bioluminescent jungle with fog and glowing flora", + "Adapt into a desert oasis at twilight with swirling dust and warm rim light" + ); +} + +const generationLighting = [ + "dramatic rim lighting", + "soft volumetric sunrise glow", + "diffuse moonlit ambience", + "harsh crystalline highlights", + "warm golden hour light", + "cool ambient neon glow" +]; + +let jobCount = 0; +let successCount = 0; +let failCount = 0; +const startTime = Date.now(); + +/** + * Helper to wait for SmartPool job completion + */ +function waitForSmartPoolJob(pool: SmartPool, jobId: string): Promise { + const job = pool.getJob(jobId); + if (job) { + if (job.status === "completed") { + return Promise.resolve(job); + } + if (job.status === "failed" || job.status === "cancelled") { + return Promise.reject(job); + } + } + + return new Promise((resolve, reject) => { + const completedListener = (e: CustomEvent<{ job: JobRecord }>) => { + try { + const job = e.detail.job as any; + if (job.id === jobId || job.jobId === jobId) { + cleanUp(); + resolve(e.detail.job); + } + } catch (error) { + console.error("Error in job:completed listener:", error); + } + }; + const failedListener = (e: CustomEvent<{ job: JobRecord; willRetry?: boolean }>) => { + try { + const job = e.detail.job as any; + if ((job.id === jobId || job.jobId === jobId) && !e.detail.willRetry) { + cleanUp(); + reject(e.detail.job); + } + } catch (error) { + console.error("Error in job:failed listener:", error); + } + }; + const cancelledListener = (e: CustomEvent<{ job: JobRecord }>) => { + try { + const job = e.detail.job as any; + if (job.id === jobId || job.jobId === jobId) { + cleanUp(); + reject(e.detail.job); + } + } catch (error) { + console.error("Error in job:cancelled listener:", error); + } + }; + const cleanUp = () => { + pool.removeEventListener("job:completed", completedListener as any); + pool.removeEventListener("job:failed", failedListener as any); + pool.removeEventListener("job:cancelled", cancelledListener as any); + }; + pool.addEventListener("job:completed", completedListener as any); + pool.addEventListener("job:failed", failedListener as any); + pool.addEventListener("job:cancelled", cancelledListener as any); + }); +} + +/** + * Main simulation function + */ +async function runSimulation() { + log("blue", `[SmartPool Two-Stage Simulation] Starting with ${hosts.length} hosts: ${hosts.join(", ")}`); + log("blue", `Generation host: ${GEN_HOST}, Edit hosts: ${EDIT_HOSTS.join(", ")}`); + + const pool = new SmartPool(hosts); + await pool.connect(); + + // Set affinity: generation jobs go to GEN_HOST, edit jobs go to EDIT_HOSTS + const genWorkflowHash = hashWorkflow(GenerationGraph); + const editWorkflowHash = hashWorkflow(EditGraph); + + pool.setAffinity(GenerationGraph, { + preferredClientIds: [GEN_HOST] + }); + + pool.setAffinity(EditGraph, { + preferredClientIds: EDIT_HOSTS + }); + + log("green", `[SmartPool Two-Stage Simulation] Affinities configured`); + log("green", ` Generation (${genWorkflowHash.substring(0, 8)}...): ${GEN_HOST}`); + log("green", ` Edit (${editWorkflowHash.substring(0, 8)}...): ${EDIT_HOSTS.join(", ")}`); + + // Listen to job events for logging + pool.addEventListener("job:queued", (e: any) => { + jobCount++; + log("cyan", `[Job ${jobCount}] Queued: ${e.detail.job.jobId.substring(0, 8)}...`); + }); + + pool.addEventListener("job:completed", (e: any) => { + successCount++; + log("green", `[✓ Success ${successCount}] Job ${e.detail.job.jobId.substring(0, 8)}... completed`); + }); + + pool.addEventListener("job:failed", (e: any) => { + failCount++; + log("red", `[✗ Failed ${failCount}] Job ${e.detail.job.jobId.substring(0, 8)}... failed: ${e.detail.job.lastError}`); + }); + + const runtimeEnd = startTime + runtimeMs; + const generatedImages: Array<{ jobId: string; genClientId: string; imageRecord: any; prompts: string[] }> = []; + const editsPerGeneration = 2; // Each generation gets 2 edits + let generationTasksStarted = 0; + let enqueueGenContinuously = true; + const maxPrefill = 5; // Limit prefill to 5 generations max + + // Producer task: continuously enqueue generation jobs + const producerTask = (async () => { + try { + while (enqueueGenContinuously && Date.now() < runtimeEnd && generationTasksStarted < maxPrefill) { + const genPrompt = pickRandom(generationPrompts); + const genNegative = pickRandom(generationNegatives); + const genSeed = nextSeed(); + const genWorkflow = buildGenerationWorkflow(genPrompt, genNegative, genSeed); + + log("yellow", `[Gen] Enqueuing generation: "${genPrompt.substring(0, 40)}..."`); + const genJobId = await pool.enqueue(genWorkflow, { + preferredClientIds: [GEN_HOST] + }); + generationTasksStarted++; + + // Fire-and-forget: wait for generation in background and add to queue + waitForSmartPoolJob(pool, genJobId) + .then((genJob) => { + log("green", `[Gen] Generation completed for job ${genJobId.substring(0, 8)}...`); + + // Extract image from result + const basePreview = (genJob.result as any).base_preview ?? (genJob.result as any)["12"]; + const records = Array.isArray(basePreview?.images) + ? basePreview.images + : Array.isArray(basePreview) + ? basePreview + : basePreview + ? [basePreview] + : []; + + if (records.length > 0) { + // Store generated image with associated edit prompts + const editPromptList = Array.from({ length: editsPerGeneration }, () => + pickRandom(editPrompts) + ); + generatedImages.push({ + jobId: genJobId, + genClientId: genJob.clientId || GEN_HOST, + imageRecord: records[0], + prompts: editPromptList + }); + log("cyan", `[Queue] Image ${genJobId.substring(0, 8)}... queued for ${editsPerGeneration} edits`); + } + }) + .catch((e) => { + log("red", `[Gen] Generation failed: ${e}`); + }); + + // Small delay between generation enqueues to spread load + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } catch (error) { + log("red", `[Producer] Error: ${error}`); + } + })(); + + // Consumer task: process edits on available images + const consumerTask = (async () => { + try { + while (Date.now() < runtimeEnd) { + if (generatedImages.length === 0) { + // Wait briefly for first generation to complete + await new Promise((resolve) => setTimeout(resolve, 100)); + continue; + } + + // Get first image with remaining edits + const sourceGen = generatedImages[0]; + if (sourceGen.prompts.length === 0) { + log("cyan", `[Queue] Image ${sourceGen.jobId.substring(0, 8)}... finished all edits`); + generatedImages.shift(); + continue; + } + + const editPrompt = sourceGen.prompts.shift()!; + const targetEditClientId = pickRandom(EDIT_HOSTS); + + log("yellow", `[Edit] Preparing edit from ${sourceGen.jobId.substring(0, 8)}...: "${editPrompt.substring(0, 40)}..."`); + + try { + const genClient = pool.clientMap.get(sourceGen.genClientId); + if (!genClient) { + log("red", `[Edit] ERROR: Generation client ${sourceGen.genClientId} not found`); + // Put edit back in queue + sourceGen.prompts.unshift(editPrompt); + await new Promise((resolve) => setTimeout(resolve, 500)); + continue; + } + + const targetEditClient = pool.clientMap.get(targetEditClientId); + if (!targetEditClient) { + log("red", `[Edit] ERROR: Edit client ${targetEditClientId} not found`); + // Put edit back in queue + sourceGen.prompts.unshift(editPrompt); + await new Promise((resolve) => setTimeout(resolve, 500)); + continue; + } + + // Upload image to edit client + try { + const imageUrl = genClient.ext.file.getPathImage(sourceGen.imageRecord as any); + const uploadName = `two-stage-${Date.now()}-${Math.random().toString(16).slice(2)}.png`; + await uploadImage(imageUrl, uploadName, targetEditClient); + log("cyan", `[Edit] Uploaded image to ${uploadName} on ${targetEditClientId}`); + + // Create and enqueue edit workflow + const editWorkflow = buildEditWorkflow(uploadName, editPrompt, nextSeed()); + const editJobId = await pool.enqueue(editWorkflow, { + preferredClientIds: [targetEditClientId] + }); + log("cyan", `[Edit] Enqueued edit job ${editJobId.substring(0, 8)}...`); + + // Wait for edit to complete (non-blocking) + waitForSmartPoolJob(pool, editJobId) + .then(() => { + log("green", `[✓ Edit Success] Job ${editJobId.substring(0, 8)}... completed`); + }) + .catch((e) => { + log("red", `[Edit] Edit job failed: ${e}`); + }); + } catch (uploadError) { + log("red", `[Edit] ERROR uploading image: ${uploadError}`); + // Put edit back in queue + sourceGen.prompts.unshift(editPrompt); + } + } catch (error) { + log("red", `[Edit] ERROR preparing edit: ${error}`); + // Put edit back in queue to retry + sourceGen.prompts.unshift(editPrompt); + } + + // Small delay between edit enqueues + await new Promise((resolve) => setTimeout(resolve, 300)); + } + } catch (error) { + log("red", `[Consumer] FATAL ERROR: ${error}`); + } + })(); + + try { + // Run both tasks concurrently until timeout + await Promise.all([ + producerTask, + consumerTask + ]).catch((error) => { + if (error.message !== "Simulation timeout") { + log("red", `[Task error] ${error}`); + } + }); + } catch (error) { + log("red", `[Simulation] Error during execution: ${error}`); + } finally { + enqueueGenContinuously = false; + pool.shutdown(); + const totalDurationMs = Date.now() - startTime; + const totalDurationSecs = (totalDurationMs / 1000).toFixed(1); + const successRate = ((successCount / (successCount + failCount)) * 100).toFixed(1); + + console.log("\n" + "=".repeat(80)); + log("bold", `[SmartPool Two-Stage Simulation] Final Summary`); + console.log("=".repeat(80)); + log("cyan", `Total Jobs: ${jobCount}`); + log("green", `Successful: ${successCount}`); + log("red", `Failed: ${failCount}`); + log("blue", `Success Rate: ${successRate}%`); + log("magenta", `Total Duration: ${totalDurationSecs}s`); + log("magenta", `Avg Job Time: ${(totalDurationMs / Math.max(1, jobCount)).toFixed(0)}ms`); + console.log("=".repeat(80) + "\n"); + + if (failCount > 0) { + process.exit(1); + } + } +} + +// Run the simulation +runSimulation().catch((error) => { + log("red", `[SmartPool Two-Stage Simulation] Fatal error: ${error}`); + process.exit(1); +}); diff --git a/simulation_output.txt b/simulation_output.txt new file mode 100644 index 0000000..51b5852 --- /dev/null +++ b/simulation_output.txt @@ -0,0 +1,231 @@ +[2025-10-30T10:02:07.489Z] blue [SmartPool Two-Stage Simulation] Starting with 3 hosts: http://afterpic-comfy-igor:8188, http://afterpic-comfy-aero16:8188, http://afterpic-comfy-domi:8188 +[2025-10-30T10:02:07.490Z] blue Generation host: http://afterpic-comfy-aero16:8188, Edit hosts: http://afterpic-comfy-igor:8188, http://afterpic-comfy-domi:8188 +Client at http://afterpic-comfy-domi:8188 (posix) connected via websockets in 169 ms +Client at http://afterpic-comfy-igor:8188 (posix) connected via websockets in 193 ms +Client at http://afterpic-comfy-aero16:8188 (posix) connected via websockets in 214 ms +{ + queue_running: [], + queue_pending: [], +} +{ + queue_running: [], + queue_pending: [], +} +{ + queue_running: [], + queue_pending: [], +} +Map(3) { + "http://afterpic-comfy-igor:8188": { + queuedJobs: 0, + runningJobs: 0, + }, + "http://afterpic-comfy-domi:8188": { + queuedJobs: 0, + runningJobs: 0, + }, + "http://afterpic-comfy-aero16:8188": { + queuedJobs: 0, + runningJobs: 0, + }, +} +[2025-10-30T10:02:07.713Z] green [SmartPool Two-Stage Simulation] Affinities configured +[2025-10-30T10:02:07.713Z] green Generation (76725665...): http://afterpic-comfy-aero16:8188 +[2025-10-30T10:02:07.713Z] green Edit (14f90d2b...): http://afterpic-comfy-igor:8188, http://afterpic-comfy-domi:8188 +[2025-10-30T10:02:07.714Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:07.714Z] cyan [Job 1] Queued: 4a97a9fb... +[2025-10-30T10:02:08.239Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:08.239Z] cyan [Job 2] Queued: 65eb41a8... +[2025-10-30T10:02:08.749Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:08.749Z] cyan [Job 3] Queued: 22ac2d13... +[2025-10-30T10:02:09.256Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:09.256Z] cyan [Job 4] Queued: bac6603a... +[2025-10-30T10:02:09.767Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:09.767Z] cyan [Job 5] Queued: b5fb5c84... +[2025-10-30T10:02:10.289Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:10.289Z] cyan [Job 6] Queued: d67b3a94... +[2025-10-30T10:02:10.780Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:10.780Z] cyan [Job 7] Queued: 44975a9d... +[2025-10-30T10:02:11.302Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:11.302Z] cyan [Job 8] Queued: 4b79717a... +[2025-10-30T10:02:11.818Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:11.818Z] cyan [Job 9] Queued: 861f6195... +[2025-10-30T10:02:12.313Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:12.314Z] cyan [Job 10] Queued: 30990e1c... +[2025-10-30T10:02:12.813Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:12.814Z] cyan [Job 11] Queued: 227fd74e... +[2025-10-30T10:02:13.309Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:13.309Z] cyan [Job 12] Queued: 8a7ebd3f... +[2025-10-30T10:02:13.810Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:13.810Z] cyan [Job 13] Queued: 9f3faac9... +[2025-10-30T10:02:14.333Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:14.334Z] cyan [Job 14] Queued: 53b39f89... +[2025-10-30T10:02:14.842Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:14.843Z] cyan [Job 15] Queued: a139db06... +[2025-10-30T10:02:15.363Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:15.363Z] cyan [Job 16] Queued: 5a3b73ef... +[2025-10-30T10:02:15.872Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:15.872Z] cyan [Job 17] Queued: 8c6dfc21... +[2025-10-30T10:02:16.399Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:16.399Z] cyan [Job 18] Queued: d764d21d... +[2025-10-30T10:02:16.894Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:16.894Z] cyan [Job 19] Queued: 521ea79e... +[2025-10-30T10:02:17.392Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:17.393Z] cyan [Job 20] Queued: 9d9c6067... +[2025-10-30T10:02:17.905Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:17.905Z] cyan [Job 21] Queued: 8eb6ec8e... +[2025-10-30T10:02:18.416Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:18.416Z] cyan [Job 22] Queued: c6c13d3e... +[2025-10-30T10:02:18.925Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:18.925Z] cyan [Job 23] Queued: 3bfd9c56... +[2025-10-30T10:02:19.421Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:19.421Z] cyan [Job 24] Queued: e0d3c023... +[2025-10-30T10:02:19.935Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:19.935Z] cyan [Job 25] Queued: e399c93a... +[2025-10-30T10:02:20.459Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:20.459Z] cyan [Job 26] Queued: ea5dd98c... +[SmartPool.waitForExecutionCompletion] Collected output from node: 12 +[SmartPool.waitForExecutionCompletion] execution_success fired for 8ab9d9a3... +[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt 1) +[2025-10-30T10:02:20.799Z] green [Γ£ô Success 1] Job 4a97a9fb... completed +[2025-10-30T10:02:20.799Z] green [Gen] Generation completed for job 4a97a9fb... +[2025-10-30T10:02:20.799Z] cyan [Queue] Image 4a97a9fb... queued for 2 edits +[2025-10-30T10:02:20.889Z] yellow [Edit] Preparing edit from 4a97a9fb...: "Convert the environment to a tranquil se..." +[2025-10-30T10:02:20.968Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:20.968Z] cyan [Job 27] Queued: 50cf1c2f... +[2025-10-30T10:02:21.059Z] cyan [Edit] Uploaded image to two-stage-1761818540890-971e950d31b09.png on http://afterpic-comfy-domi:8188 +[2025-10-30T10:02:21.060Z] cyan [Job 28] Queued: 566762ec... +[2025-10-30T10:02:21.060Z] cyan [Edit] Enqueued edit job 566762ec... +[2025-10-30T10:02:21.372Z] yellow [Edit] Preparing edit from 4a97a9fb...: "Adapt into a desert oasis at twilight wi..." +[2025-10-30T10:02:21.469Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:21.469Z] cyan [Job 29] Queued: 60757648... +[2025-10-30T10:02:21.617Z] cyan [Edit] Uploaded image to two-stage-1761818541372-1c14765e2b2db8.png on http://afterpic-comfy-domi:8188 +[2025-10-30T10:02:21.617Z] cyan [Job 30] Queued: 5c038433... +[2025-10-30T10:02:21.618Z] cyan [Edit] Enqueued edit job 5c038433... +[2025-10-30T10:02:21.919Z] cyan [Queue] Image 4a97a9fb... finished all edits +[2025-10-30T10:02:21.980Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:21.980Z] cyan [Job 31] Queued: d412d327... +[2025-10-30T10:02:22.505Z] yellow [Gen] Enqueuing generation: "retro-futuristic city skyline at sunset ..." +[2025-10-30T10:02:22.505Z] cyan [Job 32] Queued: ef3789fa... +[2025-10-30T10:02:23.018Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:23.018Z] cyan [Job 33] Queued: aa96d82c... +[2025-10-30T10:02:23.528Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:23.529Z] cyan [Job 34] Queued: 58bcef1b... +[2025-10-30T10:02:24.042Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:24.042Z] cyan [Job 35] Queued: 9e2b8ffd... +[2025-10-30T10:02:24.552Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:24.552Z] cyan [Job 36] Queued: aea7763e... +[2025-10-30T10:02:25.062Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:25.063Z] cyan [Job 37] Queued: 0cd2e0d3... +[2025-10-30T10:02:25.575Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:25.575Z] cyan [Job 38] Queued: 4aa28a61... +[2025-10-30T10:02:26.082Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:26.083Z] cyan [Job 39] Queued: b98a29e0... +[2025-10-30T10:02:26.593Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:26.593Z] cyan [Job 40] Queued: f535a9c4... +[2025-10-30T10:02:27.091Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:27.091Z] cyan [Job 41] Queued: 66239fdd... +[2025-10-30T10:02:27.604Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:27.605Z] cyan [Job 42] Queued: 9d5450e2... +[2025-10-30T10:02:28.117Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:28.117Z] cyan [Job 43] Queued: 99fb5483... +[2025-10-30T10:02:28.630Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:28.631Z] cyan [Job 44] Queued: 56fe4b7d... +[2025-10-30T10:02:29.141Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:29.141Z] cyan [Job 45] Queued: 8771ada8... +[2025-10-30T10:02:29.642Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:29.642Z] cyan [Job 46] Queued: 082aaf42... +[2025-10-30T10:02:30.151Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:30.151Z] cyan [Job 47] Queued: 8dd69785... +[2025-10-30T10:02:30.662Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:30.662Z] cyan [Job 48] Queued: 0cc42e08... +[2025-10-30T10:02:31.155Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:31.155Z] cyan [Job 49] Queued: 8beca467... +[2025-10-30T10:02:31.663Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:31.664Z] cyan [Job 50] Queued: 9330af5e... +[2025-10-30T10:02:32.169Z] yellow [Gen] Enqueuing generation: "retro-futuristic city skyline at sunset ..." +[2025-10-30T10:02:32.169Z] cyan [Job 51] Queued: 7835c0cf... +[2025-10-30T10:02:32.700Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:32.700Z] cyan [Job 52] Queued: 0cb8ace4... +[2025-10-30T10:02:33.225Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:33.226Z] cyan [Job 53] Queued: 729a905c... +[2025-10-30T10:02:33.735Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:33.735Z] cyan [Job 54] Queued: fe01fd07... +[SmartPool.waitForExecutionCompletion] Collected output from node: 12 +[SmartPool.waitForExecutionCompletion] execution_success fired for 0ce025d6... +[2025-10-30T10:02:34.246Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:34.246Z] cyan [Job 55] Queued: c90f1daf... +[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt 1) +[2025-10-30T10:02:34.337Z] green [Γ£ô Success 2] Job 65eb41a8... completed +[2025-10-30T10:02:34.337Z] green [Gen] Generation completed for job 65eb41a8... +[2025-10-30T10:02:34.337Z] cyan [Queue] Image 65eb41a8... queued for 2 edits +[2025-10-30T10:02:34.400Z] yellow [Edit] Preparing edit from 65eb41a8...: "Reimagine as a bustling cyberpunk alley ..." +[2025-10-30T10:02:34.563Z] cyan [Edit] Uploaded image to two-stage-1761818554401-786b7fd7bef468.png on http://afterpic-comfy-domi:8188 +[2025-10-30T10:02:34.564Z] cyan [Job 56] Queued: 0470ce89... +[2025-10-30T10:02:34.564Z] cyan [Edit] Enqueued edit job 0470ce89... +[2025-10-30T10:02:34.773Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:34.773Z] cyan [Job 57] Queued: 16d72dd6... +[2025-10-30T10:02:34.878Z] yellow [Edit] Preparing edit from 65eb41a8...: "Reimagine as a bustling cyberpunk alley ..." +[2025-10-30T10:02:35.085Z] cyan [Edit] Uploaded image to two-stage-1761818554878-2f74dc85bb867.png on http://afterpic-comfy-igor:8188 +[2025-10-30T10:02:35.086Z] cyan [Job 58] Queued: 1cb2bdf1... +[2025-10-30T10:02:35.086Z] cyan [Edit] Enqueued edit job 1cb2bdf1... +[2025-10-30T10:02:35.266Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:35.266Z] cyan [Job 59] Queued: 376d283a... +[2025-10-30T10:02:35.390Z] cyan [Queue] Image 65eb41a8... finished all edits +[2025-10-30T10:02:35.774Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:35.774Z] cyan [Job 60] Queued: 8df92738... +[2025-10-30T10:02:36.267Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:36.267Z] cyan [Job 61] Queued: 1121b735... +[2025-10-30T10:02:36.778Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:36.778Z] cyan [Job 62] Queued: 90e079bf... +[2025-10-30T10:02:37.287Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:37.287Z] cyan [Job 63] Queued: 7b44323c... +[2025-10-30T10:02:37.781Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:37.781Z] cyan [Job 64] Queued: 0b6b40ac... +[2025-10-30T10:02:38.296Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:38.297Z] cyan [Job 65] Queued: b0606da5... +[2025-10-30T10:02:38.809Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:38.809Z] cyan [Job 66] Queued: 9759479c... +[2025-10-30T10:02:39.332Z] yellow [Gen] Enqueuing generation: "steampunk explorer overlooking a floatin..." +[2025-10-30T10:02:39.332Z] cyan [Job 67] Queued: 8d590224... +[2025-10-30T10:02:39.842Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:39.842Z] cyan [Job 68] Queued: b6eecb8f... +[2025-10-30T10:02:40.350Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:40.350Z] cyan [Job 69] Queued: 18cc2dec... +[2025-10-30T10:02:40.848Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:40.848Z] cyan [Job 70] Queued: b4943bba... +[2025-10-30T10:02:41.343Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:41.343Z] cyan [Job 71] Queued: 20de96bc... +[2025-10-30T10:02:41.855Z] yellow [Gen] Enqueuing generation: "battle-ready mage summoning luminous gly..." +[2025-10-30T10:02:41.855Z] cyan [Job 72] Queued: 10f2fc0d... +[2025-10-30T10:02:42.381Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:42.382Z] cyan [Job 73] Queued: 358fcc3e... +[2025-10-30T10:02:42.890Z] yellow [Gen] Enqueuing generation: "retro-futuristic city skyline at sunset ..." +[2025-10-30T10:02:42.891Z] cyan [Job 74] Queued: 225d1f0a... +[2025-10-30T10:02:43.399Z] yellow [Gen] Enqueuing generation: "cinematic portrait of a spacefarer gazin..." +[2025-10-30T10:02:43.400Z] cyan [Job 75] Queued: ed910c96... +[2025-10-30T10:02:43.910Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:43.910Z] cyan [Job 76] Queued: 667998fb... +[2025-10-30T10:02:44.420Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:44.420Z] cyan [Job 77] Queued: 814ad7c0... +[2025-10-30T10:02:44.942Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:44.943Z] cyan [Job 78] Queued: 066c28c9... +[2025-10-30T10:02:45.453Z] yellow [Gen] Enqueuing generation: "lush forest clearing at dawn with crysta..." +[2025-10-30T10:02:45.453Z] cyan [Job 79] Queued: 2b9d2c32... +[2025-10-30T10:02:45.963Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:45.963Z] cyan [Job 80] Queued: 531f6a62... +[2025-10-30T10:02:46.458Z] yellow [Gen] Enqueuing generation: "ancient library guarded by arcane spirit..." +[2025-10-30T10:02:46.458Z] cyan [Job 81] Queued: 67aa35f1... +[2025-10-30T10:02:46.967Z] yellow [Gen] Enqueuing generation: "mythic beast emerging from misty mountai..." +[2025-10-30T10:02:46.967Z] cyan [Job 82] Queued: bf8785cf... +[2025-10-30T10:02:47.488Z] yellow [Gen] Enqueuing generation: "retro-futuristic city skyline at sunset ..." +[2025-10-30T10:02:47.488Z] cyan [Job 83] Queued: 1094ebb7... +[SmartPool.waitForExecutionCompletion] Collected output from node: 12 +[2025-10-30T10:02:47.995Z] yellow [Gen] Enqueuing generation: "mecha pilot preparing for launch on an i..." +[2025-10-30T10:02:47.995Z] cyan [Job 84] Queued: 7da69873... +[SmartPool.waitForExecutionCompletion] execution_success fired for b4cea1df... +[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt 1) +[2025-10-30T10:02:48.108Z] green [Γ£ô Success 3] Job 22ac2d13... completed +[2025-10-30T10:02:48.108Z] green [Gen] Generation completed for job 22ac2d13... +[2025-10-30T10:02:48.108Z] cyan [Queue] Image 22ac2d13... queued for 2 edits +[2025-10-30T10:02:48.208Z] yellow [Edit] Preparing edit from 22ac2d13...: "Turn into a bioluminescent jungle with f..." diff --git a/src/index.ts b/src/index.ts index 6629eba..80204fb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export type { AugmentNodes, SamplerName, SchedulerName } from "./node-type-hints.js"; diff --git a/src/pool/SmartPool.ts b/src/pool/SmartPool.ts index a4d7ac4..a02cef2 100644 --- a/src/pool/SmartPool.ts +++ b/src/pool/SmartPool.ts @@ -1,9 +1,12 @@ +import { randomUUID } from "node:crypto"; import { WorkflowAffinity } from "./types/affinity.js"; -import { JobId, JobRecord } from "./types/job.js"; +import { JobId, JobRecord, WorkflowJobPayload, JobStatus } from "./types/job.js"; import { hashWorkflow } from "src/pool/utils/hash.js"; import { ComfyApi } from "src/client.js"; import { Workflow } from "src/workflow.js"; import { PromptBuilder } from "src/prompt-builder.js"; +import { MemoryQueueAdapter } from "./queue/adapters/memory.js"; +import { TypedEventTarget } from "src/typed-event-target.js"; interface SmartPoolOptions { connectionTimeoutMs: number; @@ -26,7 +29,15 @@ interface ClientQueueState { runningJobs: number; } -export class SmartPool { +interface SmartPoolEventMap extends Record> { + "job:queued": CustomEvent<{ job: JobRecord }>; + "job:accepted": CustomEvent<{ job: JobRecord }>; + "job:started": CustomEvent<{ job: JobRecord }>; + "job:completed": CustomEvent<{ job: JobRecord }>; + "job:failed": CustomEvent<{ job: JobRecord; willRetry?: boolean }>; +} + +export class SmartPool extends TypedEventTarget { // Clients managed by the pool clientMap: Map = new Map(); @@ -40,6 +51,12 @@ export class SmartPool { // Affinities mapping workflow hashes to preferred clients affinities: Map = new Map(); + // Queue adapter for job persistence + private queueAdapter: MemoryQueueAdapter; + + // Flag to prevent concurrent queue processing + private processingNextJob = false; + // Pool options private options: SmartPoolOptions; @@ -51,12 +68,17 @@ export class SmartPool { constructor(clients: (ComfyApi | string)[], options?: Partial) { + super(); + if (options) { this.options = { ...DEFAULT_SMART_POOL_OPTIONS, ...options }; } else { this.options = DEFAULT_SMART_POOL_OPTIONS; } + // Initialize queue adapter + this.queueAdapter = new MemoryQueueAdapter(); + for (const client of clients) { if (typeof client === "string") { const apiClient = new ComfyApi(client); @@ -67,7 +89,7 @@ export class SmartPool { } } - emit(event: PoolEvent) { + emitLegacy(event: PoolEvent) { if (this.hooks.any) { this.hooks.any(event); } @@ -140,7 +162,6 @@ export class SmartPool { .map(value => { return new Promise(resolve => { value.getQueue().then(value1 => { - console.log(value1); this.clientQueueStates.set(value.apiHost, { queuedJobs: value1.queue_pending.length, runningJobs: value1.queue_running.length @@ -150,7 +171,6 @@ export class SmartPool { }); }); await Promise.allSettled(promises); - console.log(this.clientQueueStates); } // Add a job record to the pool @@ -187,145 +207,423 @@ export class SmartPool { this.affinities.delete(workflowHash); } - async executeImmediate(workflow: Workflow, opts: { - preferableClientIds?: string[]; - }): Promise { + /** + * Enqueue a workflow for execution by the pool. + * Auto-triggers processing via setImmediate (batteries included). + */ + async enqueue(workflow: Workflow, opts?: { + preferredClientIds?: string[]; + priority?: number; + }): Promise { + const jobId = randomUUID(); + const workflowHash = workflow.structureHash || hashWorkflow((workflow as any).json || workflow); + const workflowJson = (workflow as any).json || workflow; + const outputNodeIds = (workflow as any).outputNodeIds || []; + const outputAliases = (workflow as any).outputAliases || {}; + + // Create job record + const jobRecord: JobRecord = { + jobId, + workflow: workflowJson, + workflowHash, + options: { + maxAttempts: 3, + retryDelayMs: 1000, + priority: opts?.priority ?? 0, + preferredClientIds: opts?.preferredClientIds ?? [], + excludeClientIds: [], + metadata: {} + }, + attempts: 0, + enqueuedAt: Date.now(), + workflowMeta: { + outputNodeIds, + outputAliases + }, + status: "queued" + }; + + // Store in job store + this.jobStore.set(jobId, jobRecord); + + // Create payload for queue adapter + const payload: WorkflowJobPayload = jobRecord; + + // Enqueue with priority + await this.queueAdapter.enqueue(payload, { + priority: opts?.priority ?? 0 + }); + + // Emit queued event + this.dispatchEvent(new CustomEvent("job:queued", { detail: { job: jobRecord } })); + + // Auto-trigger queue processing immediately (not via setImmediate, so it processes right away) + setImmediate(() => this.processNextJobQueued()); + + return jobId; + } - const candidateClients: ComfyApi[] = []; - let workflowHash = workflow.structureHash; + /** + * Entry point for queue processing with deduplication guard. + * Prevents concurrent processing of jobs. + * Poll-based approach: check idle servers, collect compatible jobs, enqueue only when slots available. + */ + private async processNextJobQueued(): Promise { + if (this.processingNextJob) { + return; + } - // Determine candidate clients based on preferred IDs - if (opts.preferableClientIds && opts.preferableClientIds.length > 0) { - for (const clientId of opts.preferableClientIds) { - const client = this.clientMap.get(clientId); - if (client && client.isReady) { - candidateClients.push(client); + this.processingNextJob = true; + try { + // Continuously sync queue states and process available work + while (true) { + // Update queue states from all clients + await this.syncQueueStates(); + + // Find idle servers (not running, not pending) + const idleServers = this.findIdleServers(); + if (idleServers.length === 0) { + // No idle servers, wait a bit then check again + await new Promise(resolve => setTimeout(resolve, 1000)); + continue; } - } - } else { - // Check for affinity based on workflow hash - console.log(`Looking up affinity for workflow hash: ${workflowHash}`); - if (workflowHash) { - const affinity = this.getAffinity(workflowHash); - if (affinity && affinity.preferredClientIds) { - for (const clientId of affinity.preferredClientIds) { - const client = this.clientMap.get(clientId); - if (client && client.isReady) { - candidateClients.push(client); - } - } + + // Try to assign jobs to idle servers + const jobsAssigned = await this.assignJobsToIdleServers(idleServers); + if (jobsAssigned === 0) { + // No jobs could be assigned, wait then try again + await new Promise(resolve => setTimeout(resolve, 1000)); + continue; } + + // Jobs were assigned, give them time to start then re-check + await new Promise(resolve => setTimeout(resolve, 500)); } + } finally { + this.processingNextJob = false; } + } - if (candidateClients.length === 0) { - // Fallback to any available client - for (const client of this.clientMap.values()) { - if (client.isReady) { - candidateClients.push(client); - } + /** + * Find servers that are currently idle (no running or pending jobs) + */ + private findIdleServers(): ComfyApi[] { + const idleServers: ComfyApi[] = []; + + for (const [clientId, client] of this.clientMap) { + if (!client.isReady) continue; + + const state = this.clientQueueStates.get(clientId); + if (state && state.queuedJobs === 0 && state.runningJobs === 0) { + idleServers.push(client); } } + + return idleServers; + } - if (candidateClients.length === 0) { - throw new Error("No available clients match the preferred client IDs"); + /** + * Assign compatible jobs from our queue to idle servers + * Returns number of jobs assigned + */ + private async assignJobsToIdleServers(idleServers: ComfyApi[]): Promise { + let jobsAssigned = 0; + + // Peek at pending jobs + const pendingJobs = await this.queueAdapter.peek(100); + if (pendingJobs.length === 0) { + return 0; } - // For simplicity, pick the first available candidate client - const selectedClient = candidateClients[0]; + // Build compatibility matrix + interface JobServerMatch { + payload: WorkflowJobPayload; + job: JobRecord; + compatibleServer: ComfyApi; + } - workflowHash = workflowHash || workflow.structureHash || ""; + const matches: JobServerMatch[] = []; - // Queue the workflow and get the prompt_id - // Build PromptBuilder from the workflow to get proper prompt format - const workflowJson = (workflow as any).json || workflow; - const outputNodeIds = (workflow as any).outputNodeIds || []; - - // Auto-randomize any node input field named 'seed' whose value is -1 (common ComfyUI convention) - const autoSeeds: Record = {}; - try { - for (const [nodeId, node] of Object.entries(workflowJson)) { - const n: any = node; - if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { - if (n.inputs.seed === -1) { - const val = Math.floor(Math.random() * 2_147_483_647); // 32-bit positive range typical for seeds - n.inputs.seed = val; - autoSeeds[nodeId] = val; - } + for (const payload of pendingJobs) { + const job = this.jobStore.get(payload.jobId); + if (!job) continue; + + // Find compatible idle server for this job + for (const server of idleServers) { + if (this.isJobCompatibleWithServer(payload, job, server)) { + matches.push({ + payload, + job, + compatibleServer: server + }); + break; // Found a compatible server, move to next job } } - } catch { /* non-fatal */ } - - const pb = new PromptBuilder(workflowJson as any, [], outputNodeIds as any); - - // Map output nodes - for (const nodeId of outputNodeIds) { - pb.setOutputNode(nodeId as any, nodeId) as any; } - - const promptJson = pb.prompt; - console.log(`[SmartPool] Queuing workflow with prompt containing nodes:`, Object.keys(promptJson || {}).slice(0, 5)); - - try { - const queueResponse = await selectedClient.ext.queue.appendPrompt(promptJson); - const promptId = queueResponse.prompt_id; - console.log(`[SmartPool] Queued workflow on ${selectedClient.apiHost} with promptId=${promptId.substring(0, 8)}...`); + // Sort by selectivity (jobs with fewer compatible servers first) + matches.sort((a, b) => { + const aCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(a.payload, a.job, s)).length; + const bCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(b.payload, b.job, s)).length; + return aCompatCount - bCompatCount; + }); - this.emit({ - type: "workflow:executeImmediate", - promptId, - workflowHash, - clientId: selectedClient.apiHost - }); + // Assign jobs to idle servers + const assignedServers = new Set(); - // Simple execution wrapper: collect outputs from executed events and handle completion - const result = await this.waitForExecutionCompletion(selectedClient, promptId, workflow); + for (const match of matches) { + // Skip if we already assigned to this server + if (assignedServers.has(match.compatibleServer.apiHost)) { + continue; + } - console.log(`[SmartPool] Job completed with promptId: ${promptId.substring(0, 8)}...`); + // Reserve this specific job + const reservation = await this.queueAdapter.reserveById(match.job.jobId); + if (!reservation) { + continue; + } - const images = []; - - // Fetch outputs using the authoritative prompt ID try { - const historyData = await selectedClient.ext.history.getHistory(promptId); - if (historyData && historyData.outputs) { - for (const nodeId of Object.keys(historyData.outputs)) { - const nodeOutput = historyData.outputs[nodeId]; - if (nodeOutput.images && nodeOutput.images.length > 0) { - console.log(`[SmartPool] Found output from history node ${nodeId}: ${nodeOutput.images[0].filename}`); - images.push(...nodeOutput.images); - break; + const result = await this.enqueueJobOnServer(match.job, match.compatibleServer); + if (result) { + assignedServers.add(match.compatibleServer.apiHost); + jobsAssigned++; + + // Commit to our queue + await this.queueAdapter.commit(reservation.reservationId); + } else { + // Enqueue failed, retry later + await this.queueAdapter.retry(reservation.reservationId, { delayMs: 1000 }); + } + } catch (error) { + // Retry on error + await this.queueAdapter.retry(reservation.reservationId, { delayMs: 1000 }); + } + } + + return jobsAssigned; + } + + /** + * Check if a job is compatible with a server + */ + private isJobCompatibleWithServer(payload: WorkflowJobPayload, job: JobRecord, server: ComfyApi): boolean { + // Check preferred client IDs first + if (payload.options.preferredClientIds && payload.options.preferredClientIds.length > 0) { + return payload.options.preferredClientIds.includes(server.apiHost); + } + + // Check workflow affinity + const affinity = this.getAffinity(payload.workflowHash); + if (affinity && affinity.preferredClientIds) { + return affinity.preferredClientIds.includes(server.apiHost); + } + + // No constraints, compatible with any server + return true; + } + + /** + * Enqueue a job on a specific server + * Returns true if successful, false if failed + */ + private async enqueueJobOnServer(job: JobRecord, server: ComfyApi): Promise { + try { + const workflowJson = job.workflow; + const outputNodeIds = job.workflowMeta?.outputNodeIds || []; + + // Auto-randomize any seed fields set to -1 + try { + for (const [_, node] of Object.entries(workflowJson)) { + const n: any = node; + if (n && n.inputs && Object.prototype.hasOwnProperty.call(n.inputs, 'seed')) { + if (n.inputs.seed === -1) { + const val = Math.floor(Math.random() * 2_147_483_647); + n.inputs.seed = val; } } } - } catch (e) { - console.log(`[SmartPool] Failed to fetch history: ${e}`); + } catch { /* non-fatal */ } + + // Build prompt + const pb = new PromptBuilder(workflowJson as any, [], outputNodeIds as any); + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId as any, nodeId) as any; } - - // Fallback to result object if history didn't give us images - if (images.length === 0) { - console.log(`[SmartPool] Falling back to result object`); - const aliases = result._aliases || {}; - for (const aliasKey of Object.keys(aliases)) { - const aliasObject = result[aliases[aliasKey]]; - if (aliasObject && aliasObject.images) { - images.push(...aliasObject.images); + const promptJson = pb.prompt; + + // Queue on client + const queueResponse = await server.ext.queue.appendPrompt(promptJson); + const promptId = queueResponse.prompt_id; + + // Update job record + job.status = "running" as JobStatus; + job.clientId = server.apiHost; + job.promptId = promptId; + job.attempts += 1; + + this.dispatchEvent(new CustomEvent("job:accepted", { detail: { job } })); + this.dispatchEvent(new CustomEvent("job:started", { detail: { job } })); + + // Run execution in background + this.waitForExecutionCompletion(server, promptId, { json: workflowJson } as any) + .then((result) => { + job.status = "completed" as JobStatus; + job.result = result; + job.completedAt = Date.now(); + this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + // Trigger next processing since job completed + setImmediate(() => this.processNextJobQueued()); + }) + .catch((error) => { + job.status = "failed"; + job.lastError = error; + job.completedAt = Date.now(); + this.dispatchEvent(new CustomEvent("job:failed", { detail: { job, willRetry: false } })); + // Trigger next processing since job completed + setImmediate(() => this.processNextJobQueued()); + }); + + return true; + } catch (error) { + console.error(`[SmartPool] Failed to enqueue job on ${server.apiHost}:`, error); + return false; + } + } + + /** + * Retrieve images from a completed job's execution. + */ + async getJobOutputImages(jobId: JobId, nodeId?: string): Promise> { + const job = this.jobStore.get(jobId); + if (!job) { + throw new Error(`Job ${jobId} not found`); + } + + if (!job.clientId) { + throw new Error(`Job ${jobId} has no client assigned`); + } + + if (!job.promptId) { + throw new Error(`Job ${jobId} has no promptId assigned`); + } + + const client = this.clientMap.get(job.clientId); + if (!client) { + throw new Error(`Client ${job.clientId} not found`); + } + + // Fetch history + const historyData = await client.ext.history.getHistory(job.promptId); + if (!historyData?.outputs) { + return []; + } + + const images: Array<{ filename: string; blob: Blob }> = []; + + // Find images in specified node or first node with images + const outputEntries = Object.entries(historyData.outputs); + for (const [nId, nodeOutput] of outputEntries) { + if (nodeId && nId !== nodeId) { + continue; + } + + const output: any = nodeOutput; + if (output.images && Array.isArray(output.images)) { + for (const imageRef of output.images) { + try { + const blob = await client.ext.file.getImage(imageRef); + images.push({ + filename: imageRef.filename || `image_${nId}`, + blob + }); + } catch (e) { + console.error(`Failed to fetch image from node ${nId}:`, e); } } + if (nodeId) { + // Found specified node, stop searching + break; + } } + } + + return images; + } + + async executeImmediate(workflow: Workflow, opts: { + preferableClientIds?: string[]; + }): Promise { + // Enqueue with maximum priority + const jobId = await this.enqueue(workflow, { + preferredClientIds: opts.preferableClientIds, + priority: 1000 // High priority for immediate execution + }); + + // Wait for job completion via event listener + return new Promise((resolve, reject) => { + const onComplete = (event: Event) => { + const customEvent = event as CustomEvent; + if (customEvent.detail.job.jobId === jobId) { + cleanup(); + const job = customEvent.detail.job as JobRecord; + this.buildExecuteImmediateResult(job) + .then(resolve) + .catch(reject); + } + }; + + const onFailed = (event: Event) => { + const customEvent = event as CustomEvent; + if (customEvent.detail.job.jobId === jobId) { + cleanup(); + reject(new Error(`Job failed: ${JSON.stringify(customEvent.detail.job.lastError)}`)); + } + }; + + let cleanup = () => { + this.removeEventListener("job:completed", onComplete); + this.removeEventListener("job:failed", onFailed); + clearTimeout(timeoutHandle); + }; - // Read images from the client that executed the workflow - const imageBlob = await selectedClient.ext.file.getImage(images[0]); - console.log(`[SmartPool] Fetched image blob for file: ${JSON.stringify(images[0])}`); + this.addEventListener("job:completed", onComplete); + this.addEventListener("job:failed", onFailed); + + // Timeout after 5 minutes + const timeoutHandle = setTimeout(() => { + cleanup(); + reject(new Error("Execution timeout")); + }, 5 * 60 * 1000); + }); + } - console.log(`Workflow executed on client ${selectedClient.apiHost} with: `, result); + /** + * Build the return value for executeImmediate() with images and blob. + */ + private async buildExecuteImmediateResult(job: JobRecord): Promise { + const images: any[] = []; + let imageBlob: Blob | undefined; - return { ...result, images, imageBlob }; - } catch (err) { - console.error(`[SmartPool] Failed to execute workflow:`, err); - throw err; + // Fetch images from job + try { + const jobImages = await this.getJobOutputImages(job.jobId); + for (const img of jobImages) { + images.push({ + filename: img.filename + }); + imageBlob = img.blob; + } + } catch (e) { + console.log(`[SmartPool] Failed to fetch images: ${e}`); } + + return { + ...job.result, + images, + imageBlob, + _promptId: job.promptId + }; } private async waitForExecutionCompletion(client: ComfyApi, promptId: string, workflow: Workflow): Promise { @@ -352,7 +650,6 @@ export class SmartPool { // Store output keyed by node ID result[nodeId] = output; collectedNodes.add(nodeId); - console.log(`[SmartPool.waitForExecutionCompletion] Collected output from node: ${nodeId}`); }; const executionSuccessHandler = async (ev: CustomEvent) => { @@ -363,15 +660,11 @@ export class SmartPool { return; } - console.log(`[SmartPool.waitForExecutionCompletion] execution_success fired for ${promptId.substring(0, 8)}...`); - // Try to fetch complete outputs from history for (let retries = 0; retries < 5; retries++) { try { const historyData = await client.ext.history.getHistory(promptId); if (historyData?.outputs) { - console.log(`[SmartPool.waitForExecutionCompletion] Found outputs in history (attempt ${retries + 1})`); - // Populate result from history for any nodes we didn't get from websocket for (const [nodeIdStr, nodeOutput] of Object.entries(historyData.outputs)) { const nodeId = parseInt(nodeIdStr, 10).toString(); diff --git a/src/pool/index.ts b/src/pool/index.ts index a24583a..741e8f9 100644 --- a/src/pool/index.ts +++ b/src/pool/index.ts @@ -1,4 +1,5 @@ export { WorkflowPool } from "./WorkflowPool.js"; +export { SmartPool } from "./SmartPool.js"; export type { WorkflowPoolOpts } from "./WorkflowPool.js"; export type { WorkflowPoolEventMap } from "./types/events.js"; export type { JobRecord, JobStatus, WorkflowJobOptions } from "./types/job.js"; From 0caf56a3bd01de7ccc0081983a1b756b136f8a6b Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:51:51 -0300 Subject: [PATCH 18/19] smartpool impl - 1.6.0 --- dist/pool/SmartPool.d.ts | 34 +++++ dist/pool/SmartPool.d.ts.map | 2 +- dist/pool/SmartPool.js | 110 +++++++++++++--- dist/pool/SmartPool.js.map | 2 +- package.json | 2 +- scripts/simulator/helpers.ts | 19 ++- scripts/smartpool-two-stage-simulation.ts | 77 ++++++++---- src/pool/SmartPool.ts | 146 +++++++++++++++++++--- 8 files changed, 325 insertions(+), 67 deletions(-) diff --git a/dist/pool/SmartPool.d.ts b/dist/pool/SmartPool.d.ts index 761cdb9..18541cf 100644 --- a/dist/pool/SmartPool.d.ts +++ b/dist/pool/SmartPool.d.ts @@ -17,6 +17,13 @@ interface ClientQueueState { queuedJobs: number; runningJobs: number; } +interface ServerPerformanceMetrics { + clientId: string; + totalJobsCompleted: number; + totalExecutionTimeMs: number; + averageExecutionTimeMs: number; + lastJobDurationMs?: number; +} interface SmartPoolEventMap extends Record> { "job:queued": CustomEvent<{ job: JobRecord; @@ -40,6 +47,7 @@ export declare class SmartPool extends TypedEventTarget { clientQueueStates: Map; jobStore: Map; affinities: Map; + serverPerformance: Map; private queueAdapter; private processingNextJob; private options; @@ -49,6 +57,20 @@ export declare class SmartPool extends TypedEventTarget { }; constructor(clients: (ComfyApi | string)[], options?: Partial); emitLegacy(event: PoolEvent): void; + /** + * Adds an event listener for the specified event type. + * Properly typed wrapper around EventTarget.addEventListener. + */ + on(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void; + /** + * Removes an event listener for the specified event type. + * Properly typed wrapper around EventTarget.removeEventListener. + */ + off(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: EventListenerOptions | boolean): void; + /** + * Adds a one-time event listener for the specified event type. + */ + once(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void; connect(): Promise; shutdown(): void; syncQueueStates(): Promise; @@ -58,6 +80,18 @@ export declare class SmartPool extends TypedEventTarget { setAffinity(workflow: object, affinity: Omit): void; getAffinity(workflowHash: string): WorkflowAffinity | undefined; removeAffinity(workflowHash: string): void; + /** + * Track server performance metrics for job execution + */ + private updateServerPerformance; + /** + * Get server performance metrics + */ + getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined; + /** + * Get sorted list of servers by performance (fastest first) within a given set + */ + sortServersByPerformance(serverIds: string[]): string[]; /** * Enqueue a workflow for execution by the pool. * Auto-triggers processing via setImmediate (batteries included). diff --git a/dist/pool/SmartPool.d.ts.map b/dist/pool/SmartPool.d.ts.map index 5ba50d4..1d8cb3b 100644 --- a/dist/pool/SmartPool.d.ts.map +++ b/dist/pool/SmartPool.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAiC,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAkB,SAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAClE,YAAY,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC9C,cAAc,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAChD,aAAa,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/C,eAAe,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IACjD,YAAY,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,qBAAa,SAAU,SAAQ,gBAAgB,CAAC,iBAAiB,CAAC;IAGhE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAG7C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAG7D,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAa;IAG5C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAGtD,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,OAAO,CAAmB;IAGlC,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACzD,CAAM;gBAEK,OAAO,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAuB/E,UAAU,CAAC,KAAK,EAAE,SAAS;IAUrB,OAAO;IA8Cb,QAAQ;IAUF,eAAe;IAmBrB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAKzC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAK3C,SAAS,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAS9E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK/D,cAAc,CAAC,YAAY,EAAE,MAAM;IAInC;;;OAGG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;QAC5C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiDlB;;;;OAIG;YACW,oBAAoB;IAoClC;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;YACW,uBAAuB;IA8ErC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;OAGG;YACW,kBAAkB;IAgEhC;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAyDnG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,GAAG,OAAO,CAAC,GAAG,CAAC;IA6ChB;;OAEG;YACW,2BAA2B;YAyB3B,0BAA0B;CA2GzC"} \ No newline at end of file +{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/SmartPool.js b/dist/pool/SmartPool.js index 7d43671..2fb993b 100644 --- a/dist/pool/SmartPool.js +++ b/dist/pool/SmartPool.js @@ -16,6 +16,8 @@ export class SmartPool extends TypedEventTarget { jobStore = new Map(); // Affinities mapping workflow hashes to preferred clients affinities = new Map(); + // Server performance metrics tracking + serverPerformance = new Map(); // Queue adapter for job persistence queueAdapter; // Flag to prevent concurrent queue processing @@ -53,6 +55,27 @@ export class SmartPool extends TypedEventTarget { specificHook(event); } } + /** + * Adds an event listener for the specified event type. + * Properly typed wrapper around EventTarget.addEventListener. + */ + on(type, handler, options) { + super.on(type, handler, options); + return () => this.off(type, handler, options); + } + /** + * Removes an event listener for the specified event type. + * Properly typed wrapper around EventTarget.removeEventListener. + */ + off(type, handler, options) { + super.off(type, handler, options); + } + /** + * Adds a one-time event listener for the specified event type. + */ + once(type, handler, options) { + return super.once(type, handler, options); + } async connect() { const connectionPromises = []; const tRefZero = Date.now(); @@ -151,6 +174,48 @@ export class SmartPool extends TypedEventTarget { removeAffinity(workflowHash) { this.affinities.delete(workflowHash); } + /** + * Track server performance metrics for job execution + */ + updateServerPerformance(clientId, executionTimeMs) { + let metrics = this.serverPerformance.get(clientId); + if (!metrics) { + metrics = { + clientId, + totalJobsCompleted: 0, + totalExecutionTimeMs: 0, + averageExecutionTimeMs: 0, + lastJobDurationMs: 0 + }; + this.serverPerformance.set(clientId, metrics); + } + metrics.totalJobsCompleted++; + metrics.totalExecutionTimeMs += executionTimeMs; + metrics.lastJobDurationMs = executionTimeMs; + metrics.averageExecutionTimeMs = metrics.totalExecutionTimeMs / metrics.totalJobsCompleted; + } + /** + * Get server performance metrics + */ + getServerPerformance(clientId) { + return this.serverPerformance.get(clientId); + } + /** + * Get sorted list of servers by performance (fastest first) within a given set + */ + sortServersByPerformance(serverIds) { + return [...serverIds].sort((a, b) => { + const metricsA = this.serverPerformance.get(a); + const metricsB = this.serverPerformance.get(b); + // Servers with no metrics go to end (untracked/slow startup) + if (!metricsA) + return 1; + if (!metricsB) + return -1; + // Sort by average execution time (fastest first) + return metricsA.averageExecutionTimeMs - metricsB.averageExecutionTimeMs; + }); + } /** * Enqueue a workflow for execution by the pool. * Auto-triggers processing via setImmediate (batteries included). @@ -264,29 +329,36 @@ export class SmartPool extends TypedEventTarget { const job = this.jobStore.get(payload.jobId); if (!job) continue; - // Find compatible idle server for this job - for (const server of idleServers) { - if (this.isJobCompatibleWithServer(payload, job, server)) { - matches.push({ - payload, - job, - compatibleServer: server - }); - break; // Found a compatible server, move to next job - } + // Find all compatible idle servers for this job + const compatibleServers = idleServers.filter(s => this.isJobCompatibleWithServer(payload, job, s)); + if (compatibleServers.length > 0) { + // Sort compatible servers by performance (fastest first) + const sortedServers = this.sortServersByPerformance(compatibleServers.map(s => s.apiHost)) + .map(id => idleServers.find(s => s.apiHost === id)) + .filter((s) => s !== undefined); + matches.push({ + payload, + job, + compatibleServers: sortedServers + }); } } // Sort by selectivity (jobs with fewer compatible servers first) matches.sort((a, b) => { - const aCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(a.payload, a.job, s)).length; - const bCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(b.payload, b.job, s)).length; - return aCompatCount - bCompatCount; + return a.compatibleServers.length - b.compatibleServers.length; }); // Assign jobs to idle servers const assignedServers = new Set(); for (const match of matches) { - // Skip if we already assigned to this server - if (assignedServers.has(match.compatibleServer.apiHost)) { + // Use the fastest compatible server that hasn't been assigned yet + let targetServer; + for (const server of match.compatibleServers) { + if (!assignedServers.has(server.apiHost)) { + targetServer = server; + break; + } + } + if (!targetServer) { continue; } // Reserve this specific job @@ -295,9 +367,9 @@ export class SmartPool extends TypedEventTarget { continue; } try { - const result = await this.enqueueJobOnServer(match.job, match.compatibleServer); + const result = await this.enqueueJobOnServer(match.job, targetServer); if (result) { - assignedServers.add(match.compatibleServer.apiHost); + assignedServers.add(targetServer.apiHost); jobsAssigned++; // Commit to our queue await this.queueAdapter.commit(reservation.reservationId); @@ -365,6 +437,7 @@ export class SmartPool extends TypedEventTarget { job.clientId = server.apiHost; job.promptId = promptId; job.attempts += 1; + job.startedAt = Date.now(); // Track when job starts executing this.dispatchEvent(new CustomEvent("job:accepted", { detail: { job } })); this.dispatchEvent(new CustomEvent("job:started", { detail: { job } })); // Run execution in background @@ -373,6 +446,9 @@ export class SmartPool extends TypedEventTarget { job.status = "completed"; job.result = result; job.completedAt = Date.now(); + // Track server performance + const executionTimeMs = job.completedAt - (job.startedAt || job.completedAt); + this.updateServerPerformance(server.apiHost, executionTimeMs); this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); // Trigger next processing since job completed setImmediate(() => this.processNextJobQueued()); diff --git a/dist/pool/SmartPool.js.map b/dist/pool/SmartPool.js.map index eaad158..5eb796d 100644 --- a/dist/pool/SmartPool.js.map +++ b/dist/pool/SmartPool.js.map @@ -1 +1 @@ -{"version":3,"file":"SmartPool.js","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SmartPool.js","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 98f04c8..e3bf41d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "comfyui-node", - "version": "1.5.0", + "version": "1.6.0", "description": "ComfyUI Node.js Client", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/scripts/simulator/helpers.ts b/scripts/simulator/helpers.ts index 382cb8d..adec01e 100644 --- a/scripts/simulator/helpers.ts +++ b/scripts/simulator/helpers.ts @@ -1,8 +1,21 @@ import type { ComfyApi } from "../../src/index.ts"; -export function log(...args: any[]) { +// ANSI color codes for terminal output +const COLORS = { + reset: "\x1b[0m", + bold: "\x1b[1m", + red: "\x1b[31m", + green: "\x1b[32m", + yellow: "\x1b[33m", + blue: "\x1b[34m", + magenta: "\x1b[35m", + cyan: "\x1b[36m" +}; + +export function log(color: keyof typeof COLORS | string, ...args: any[]) { // eslint-disable-next-line no-console - console.log(`[${new Date().toISOString()}]`, ...args); + const colorCode = COLORS[color as keyof typeof COLORS] || COLORS.reset; + console.log(`${colorCode}[${new Date().toISOString()}]`, ...args, COLORS.reset); } export function randomInt(min: number, max: number) { @@ -45,7 +58,7 @@ export async function uploadImage(imageUrl: string, uploadName: string, client: } const arrayBuffer = await response.arrayBuffer(); const blob = new Blob([arrayBuffer]); - await client.ext.file.uploadImage(blob, uploadName, { overwrite: true }); + await client.ext.file.uploadImage(blob, uploadName, { override: true }); } export function nextSeed(seedStrategy: "random" | "auto" | "fixed") { diff --git a/scripts/smartpool-two-stage-simulation.ts b/scripts/smartpool-two-stage-simulation.ts index 0a2a958..4b98f75 100644 --- a/scripts/smartpool-two-stage-simulation.ts +++ b/scripts/smartpool-two-stage-simulation.ts @@ -1,19 +1,24 @@ -import { SmartPool, JobRecord, Workflow } from "../src/index.ts"; +import { JobRecord, SmartPool } from "../src/index.ts"; +import { hashWorkflow } from "../src/pool/utils/hash.ts"; +import { log, nextSeed, pickRandom, randomInt, uploadImage } from "./simulator/helpers.ts"; +import { buildEditWorkflow, buildGenerationWorkflow } from "./simulator/workflows.ts"; import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" assert { type: "json" }; import EditGraph from "./workflows/quick-edit-test.json" assert { type: "json" }; -import { delay } from "../src/tools.ts"; -import { log, pickRandom, uploadImage, nextSeed, randomInt } from "./simulator/helpers.ts"; -import { buildEditWorkflow, buildGenerationWorkflow } from "./simulator/workflows.ts"; -import { hashWorkflow } from "../src/pool/utils/hash.ts"; const DEFAULT_HOSTS = [ "http://afterpic-comfy-igor:8188", "http://afterpic-comfy-aero16:8188", - "http://afterpic-comfy-domi:8188" + "http://afterpic-comfy-domi:8188", + "http://afterpic-comfy-patrick:8188" ]; const GEN_HOST = "http://afterpic-comfy-aero16:8188"; -const EDIT_HOSTS = ["http://afterpic-comfy-igor:8188", "http://afterpic-comfy-domi:8188"]; + +const EDIT_HOSTS = [ + "http://afterpic-comfy-igor:8188", + "http://afterpic-comfy-domi:8188", + "http://afterpic-comfy-patrick:8188" +]; const hosts = process.env.TWO_STAGE_HOSTS ? process.env.TWO_STAGE_HOSTS.split(",") @@ -28,15 +33,15 @@ if (hosts.length === 0) { const runtimeMs = Number.isFinite(Number(process.env.TWO_STAGE_RUNTIME_MS)) ? Number(process.env.TWO_STAGE_RUNTIME_MS) - : 6 * 60 * 60 * 1000; // 6 hours + : 1 * 60 * 60 * 1000; // 1 hour let minDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MIN_DELAY_MS)) ? Number(process.env.TWO_STAGE_MIN_DELAY_MS) - : 1000; // 1 second + : 10000; // 10 seconds let maxDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MAX_DELAY_MS)) ? Number(process.env.TWO_STAGE_MAX_DELAY_MS) - : 5000; // 5 seconds + : 25000; // 25 seconds if (minDelayMs > maxDelayMs) { console.warn(`Swapping min/max delay: ${minDelayMs} > ${maxDelayMs}`); @@ -157,13 +162,13 @@ function waitForSmartPoolJob(pool: SmartPool, jobId: string): Promise } }; const cleanUp = () => { - pool.removeEventListener("job:completed", completedListener as any); - pool.removeEventListener("job:failed", failedListener as any); - pool.removeEventListener("job:cancelled", cancelledListener as any); + pool.off("job:completed", completedListener as any); + pool.off("job:failed", failedListener as any); + pool.off("job:cancelled", cancelledListener as any); }; - pool.addEventListener("job:completed", completedListener as any); - pool.addEventListener("job:failed", failedListener as any); - pool.addEventListener("job:cancelled", cancelledListener as any); + pool.on("job:completed", completedListener as any); + pool.on("job:failed", failedListener as any); + pool.on("job:cancelled", cancelledListener as any); }); } @@ -194,42 +199,51 @@ async function runSimulation() { log("green", ` Edit (${editWorkflowHash.substring(0, 8)}...): ${EDIT_HOSTS.join(", ")}`); // Listen to job events for logging - pool.addEventListener("job:queued", (e: any) => { + pool.on("job:queued", (e: any) => { jobCount++; log("cyan", `[Job ${jobCount}] Queued: ${e.detail.job.jobId.substring(0, 8)}...`); }); - pool.addEventListener("job:completed", (e: any) => { + pool.on("job:completed", (e: any) => { successCount++; log("green", `[✓ Success ${successCount}] Job ${e.detail.job.jobId.substring(0, 8)}... completed`); }); - pool.addEventListener("job:failed", (e: any) => { + pool.on("job:failed", (e: any) => { failCount++; log("red", `[✗ Failed ${failCount}] Job ${e.detail.job.jobId.substring(0, 8)}... failed: ${e.detail.job.lastError}`); }); const runtimeEnd = startTime + runtimeMs; const generatedImages: Array<{ jobId: string; genClientId: string; imageRecord: any; prompts: string[] }> = []; - const editsPerGeneration = 2; // Each generation gets 2 edits - let generationTasksStarted = 0; + let currentlyQueuedGenJobs = 0; // Track jobs currently queued in SmartPool let enqueueGenContinuously = true; - const maxPrefill = 5; // Limit prefill to 5 generations max + const maxPrefill = 2; // Max number of generation jobs to keep queued in SmartPool (safety limit for ComfyUI queue) // Producer task: continuously enqueue generation jobs const producerTask = (async () => { try { - while (enqueueGenContinuously && Date.now() < runtimeEnd && generationTasksStarted < maxPrefill) { + while (enqueueGenContinuously && Date.now() < runtimeEnd) { + // Only enqueue if we haven't exceeded maxPrefill + if (currentlyQueuedGenJobs >= maxPrefill) { + await new Promise((resolve) => setTimeout(resolve, 100)); + continue; + } + const genPrompt = pickRandom(generationPrompts); const genNegative = pickRandom(generationNegatives); - const genSeed = nextSeed(); + const genSeed = nextSeed("random"); const genWorkflow = buildGenerationWorkflow(genPrompt, genNegative, genSeed); log("yellow", `[Gen] Enqueuing generation: "${genPrompt.substring(0, 40)}..."`); const genJobId = await pool.enqueue(genWorkflow, { preferredClientIds: [GEN_HOST] }); - generationTasksStarted++; + currentlyQueuedGenJobs++; + + // Random user think time between generation requests (simulates real-world usage) + const userThinkTime = randomInt(minDelayMs, maxDelayMs); + await new Promise((resolve) => setTimeout(resolve, userThinkTime)); // Fire-and-forget: wait for generation in background and add to queue waitForSmartPoolJob(pool, genJobId) @@ -247,6 +261,8 @@ async function runSimulation() { : []; if (records.length > 0) { + // Randomize number of edits per generation (1-3) + const editsPerGeneration = randomInt(1, 3); // Store generated image with associated edit prompts const editPromptList = Array.from({ length: editsPerGeneration }, () => pickRandom(editPrompts) @@ -259,9 +275,14 @@ async function runSimulation() { }); log("cyan", `[Queue] Image ${genJobId.substring(0, 8)}... queued for ${editsPerGeneration} edits`); } + + // Decrement queued count now that this job is done + currentlyQueuedGenJobs--; }) .catch((e) => { log("red", `[Gen] Generation failed: ${e}`); + // Decrement queued count on failure too + currentlyQueuedGenJobs--; }); // Small delay between generation enqueues to spread load @@ -322,12 +343,16 @@ async function runSimulation() { log("cyan", `[Edit] Uploaded image to ${uploadName} on ${targetEditClientId}`); // Create and enqueue edit workflow - const editWorkflow = buildEditWorkflow(uploadName, editPrompt, nextSeed()); + const editWorkflow = buildEditWorkflow(uploadName, editPrompt, nextSeed("random")); const editJobId = await pool.enqueue(editWorkflow, { preferredClientIds: [targetEditClientId] }); log("cyan", `[Edit] Enqueued edit job ${editJobId.substring(0, 8)}...`); + // Random user think time before next edit request (simulates user reviewing results) + const userEditThinkTime = randomInt(Math.floor(minDelayMs * 0.5), Math.floor(maxDelayMs * 0.5)); + await new Promise((resolve) => setTimeout(resolve, userEditThinkTime)); + // Wait for edit to complete (non-blocking) waitForSmartPoolJob(pool, editJobId) .then(() => { diff --git a/src/pool/SmartPool.ts b/src/pool/SmartPool.ts index a02cef2..6ddc369 100644 --- a/src/pool/SmartPool.ts +++ b/src/pool/SmartPool.ts @@ -29,6 +29,14 @@ interface ClientQueueState { runningJobs: number; } +interface ServerPerformanceMetrics { + clientId: string; + totalJobsCompleted: number; + totalExecutionTimeMs: number; + averageExecutionTimeMs: number; + lastJobDurationMs?: number; +} + interface SmartPoolEventMap extends Record> { "job:queued": CustomEvent<{ job: JobRecord }>; "job:accepted": CustomEvent<{ job: JobRecord }>; @@ -51,6 +59,9 @@ export class SmartPool extends TypedEventTarget { // Affinities mapping workflow hashes to preferred clients affinities: Map = new Map(); + // Server performance metrics tracking + serverPerformance: Map = new Map(); + // Queue adapter for job persistence private queueAdapter: MemoryQueueAdapter; @@ -99,6 +110,42 @@ export class SmartPool extends TypedEventTarget { } } + /** + * Adds an event listener for the specified event type. + * Properly typed wrapper around EventTarget.addEventListener. + */ + on( + type: K, + handler: (ev: SmartPoolEventMap[K]) => void, + options?: AddEventListenerOptions | boolean + ) { + super.on(type, handler, options); + return () => this.off(type, handler, options); + } + + /** + * Removes an event listener for the specified event type. + * Properly typed wrapper around EventTarget.removeEventListener. + */ + off( + type: K, + handler: (ev: SmartPoolEventMap[K]) => void, + options?: EventListenerOptions | boolean + ) { + super.off(type, handler as any, options); + } + + /** + * Adds a one-time event listener for the specified event type. + */ + once( + type: K, + handler: (ev: SmartPoolEventMap[K]) => void, + options?: AddEventListenerOptions | boolean + ) { + return super.once(type, handler, options); + } + async connect() { const connectionPromises = []; const tRefZero = Date.now(); @@ -207,6 +254,53 @@ export class SmartPool extends TypedEventTarget { this.affinities.delete(workflowHash); } + /** + * Track server performance metrics for job execution + */ + private updateServerPerformance(clientId: string, executionTimeMs: number) { + let metrics = this.serverPerformance.get(clientId); + + if (!metrics) { + metrics = { + clientId, + totalJobsCompleted: 0, + totalExecutionTimeMs: 0, + averageExecutionTimeMs: 0, + lastJobDurationMs: 0 + }; + this.serverPerformance.set(clientId, metrics); + } + + metrics.totalJobsCompleted++; + metrics.totalExecutionTimeMs += executionTimeMs; + metrics.lastJobDurationMs = executionTimeMs; + metrics.averageExecutionTimeMs = metrics.totalExecutionTimeMs / metrics.totalJobsCompleted; + } + + /** + * Get server performance metrics + */ + getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined { + return this.serverPerformance.get(clientId); + } + + /** + * Get sorted list of servers by performance (fastest first) within a given set + */ + sortServersByPerformance(serverIds: string[]): string[] { + return [...serverIds].sort((a, b) => { + const metricsA = this.serverPerformance.get(a); + const metricsB = this.serverPerformance.get(b); + + // Servers with no metrics go to end (untracked/slow startup) + if (!metricsA) return 1; + if (!metricsB) return -1; + + // Sort by average execution time (fastest first) + return metricsA.averageExecutionTimeMs - metricsB.averageExecutionTimeMs; + }); + } + /** * Enqueue a workflow for execution by the pool. * Auto-triggers processing via setImmediate (batteries included). @@ -339,7 +433,7 @@ export class SmartPool extends TypedEventTarget { interface JobServerMatch { payload: WorkflowJobPayload; job: JobRecord; - compatibleServer: ComfyApi; + compatibleServers: ComfyApi[]; } const matches: JobServerMatch[] = []; @@ -348,32 +442,42 @@ export class SmartPool extends TypedEventTarget { const job = this.jobStore.get(payload.jobId); if (!job) continue; - // Find compatible idle server for this job - for (const server of idleServers) { - if (this.isJobCompatibleWithServer(payload, job, server)) { - matches.push({ - payload, - job, - compatibleServer: server - }); - break; // Found a compatible server, move to next job - } + // Find all compatible idle servers for this job + const compatibleServers = idleServers.filter(s => this.isJobCompatibleWithServer(payload, job, s)); + + if (compatibleServers.length > 0) { + // Sort compatible servers by performance (fastest first) + const sortedServers = this.sortServersByPerformance(compatibleServers.map(s => s.apiHost)) + .map(id => idleServers.find(s => s.apiHost === id)) + .filter((s): s is ComfyApi => s !== undefined); + + matches.push({ + payload, + job, + compatibleServers: sortedServers + }); } } // Sort by selectivity (jobs with fewer compatible servers first) matches.sort((a, b) => { - const aCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(a.payload, a.job, s)).length; - const bCompatCount = idleServers.filter(s => this.isJobCompatibleWithServer(b.payload, b.job, s)).length; - return aCompatCount - bCompatCount; + return a.compatibleServers.length - b.compatibleServers.length; }); // Assign jobs to idle servers const assignedServers = new Set(); for (const match of matches) { - // Skip if we already assigned to this server - if (assignedServers.has(match.compatibleServer.apiHost)) { + // Use the fastest compatible server that hasn't been assigned yet + let targetServer: ComfyApi | undefined; + for (const server of match.compatibleServers) { + if (!assignedServers.has(server.apiHost)) { + targetServer = server; + break; + } + } + + if (!targetServer) { continue; } @@ -384,9 +488,9 @@ export class SmartPool extends TypedEventTarget { } try { - const result = await this.enqueueJobOnServer(match.job, match.compatibleServer); + const result = await this.enqueueJobOnServer(match.job, targetServer); if (result) { - assignedServers.add(match.compatibleServer.apiHost); + assignedServers.add(targetServer.apiHost); jobsAssigned++; // Commit to our queue @@ -461,6 +565,7 @@ export class SmartPool extends TypedEventTarget { job.clientId = server.apiHost; job.promptId = promptId; job.attempts += 1; + job.startedAt = Date.now(); // Track when job starts executing this.dispatchEvent(new CustomEvent("job:accepted", { detail: { job } })); this.dispatchEvent(new CustomEvent("job:started", { detail: { job } })); @@ -471,6 +576,11 @@ export class SmartPool extends TypedEventTarget { job.status = "completed" as JobStatus; job.result = result; job.completedAt = Date.now(); + + // Track server performance + const executionTimeMs = job.completedAt - (job.startedAt || job.completedAt); + this.updateServerPerformance(server.apiHost, executionTimeMs); + this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); // Trigger next processing since job completed setImmediate(() => this.processNextJobQueued()); From a7df63f39662bc995d52361df81af7a506ddead2 Mon Sep 17 00:00:00 2001 From: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:45:20 -0300 Subject: [PATCH 19/19] smartpool v2 --- dist/index.d.ts | 2 +- dist/index.d.ts.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/pool/SmartPoolV2.d.ts | 120 +++ dist/pool/SmartPoolV2.d.ts.map | 1 + dist/pool/SmartPoolV2.js | 587 +++++++++++++++ dist/pool/SmartPoolV2.js.map | 1 + dist/pool/index.d.ts | 1 + dist/pool/index.d.ts.map | 2 +- dist/pool/index.js | 1 + dist/pool/index.js.map | 2 +- scripts/smartpoolv2-two-stage-simulation.ts | 380 ++++++++++ src/index.ts | 2 +- src/pool/SmartPoolV2.ts | 787 ++++++++++++++++++++ src/pool/index.ts | 1 + 16 files changed, 1886 insertions(+), 7 deletions(-) create mode 100644 dist/pool/SmartPoolV2.d.ts create mode 100644 dist/pool/SmartPoolV2.d.ts.map create mode 100644 dist/pool/SmartPoolV2.js create mode 100644 dist/pool/SmartPoolV2.js.map create mode 100644 scripts/smartpoolv2-two-stage-simulation.ts create mode 100644 src/pool/SmartPoolV2.ts diff --git a/dist/index.d.ts b/dist/index.d.ts index be42d3b..3ff9ea5 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, SmartPoolV2, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export type { AugmentNodes, SamplerName, SchedulerName } from "./node-type-hints.js"; diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index ef07d99..c425b49 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 220065c..35a0019 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, SmartPoolV2, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export { seed } from "./tools.js"; diff --git a/dist/index.js.map b/dist/index.js.map index 7580017..6552ff9 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoBtD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/pool/SmartPoolV2.d.ts b/dist/pool/SmartPoolV2.d.ts new file mode 100644 index 0000000..7efd031 --- /dev/null +++ b/dist/pool/SmartPoolV2.d.ts @@ -0,0 +1,120 @@ +import { TypedEventTarget } from "../typed-event-target.js"; +import { ComfyApi } from "../client.js"; +import { Workflow } from "../workflow.js"; +import type { WorkflowAffinity } from "./types/affinity.js"; +import type { JobId, JobRecord } from "./types/job.js"; +interface SmartPoolV2Options { + connectionTimeoutMs?: number; + jobExecutionTimeoutMs?: number; + groupIdleTimeoutMs?: number; + maxQueueDepth?: number; +} +interface ServerPerformanceMetrics { + clientId: string; + totalJobsCompleted: number; + totalExecutionTimeMs: number; + averageExecutionTimeMs: number; + lastJobDurationMs?: number; +} +interface SmartPoolV2EventMap extends Record> { + "job:queued": CustomEvent<{ + job: JobRecord; + }>; + "job:accepted": CustomEvent<{ + job: JobRecord; + clientId: string; + }>; + "job:started": CustomEvent<{ + job: JobRecord; + clientId: string; + promptId: string; + }>; + "job:completed": CustomEvent<{ + job: JobRecord; + }>; + "job:failed": CustomEvent<{ + job: JobRecord; + error: Error; + willRetry?: boolean; + }>; + "group:idle-timeout": CustomEvent<{ + groupId: string; + reason: string; + }>; + "server:idle": CustomEvent<{ + clientId: string; + groupId?: string; + }>; +} +export declare class SmartPoolV2 extends TypedEventTarget { + private clientMap; + private affinityGroups; + private defaultQueue?; + private jobStore; + private executionContexts; + private idleServers; + private serverPerformance; + private options; + private isReady; + private readyResolve?; + constructor(clients: (ComfyApi | string)[], options?: SmartPoolV2Options); + /** + * Initialize pool and connect all clients + */ + connect(): Promise; + /** + * Wait for pool to be ready + */ + ready(): Promise; + /** + * Enqueue a workflow - automatically routed by workflow hash + * Optional preferredClientIds overrides default routing for this specific job + */ + enqueue(workflow: Workflow, options?: { + preferredClientIds?: string[]; + priority?: number; + metadata?: Record; + }): Promise; + /** + * Set workflow affinity - auto-creates group by workflow hash + * Maps workflow hash to preferred servers + */ + setAffinity(workflow: object, affinity: Omit): void; + /** + * Get job by ID + */ + getJob(jobId: JobId): JobRecord | undefined; + /** + * Shutdown pool + */ + shutdown(): void; + /** + * Get server performance metrics + */ + getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined; + private createAffinityGroup; + /** + * Process affinity group queue - triggered by events only (no polling) + */ + private processAffinityGroup; + /** + * Enqueue job on server and manage execution + */ + private enqueueJobOnServer; + /** + * Handle job completion + */ + private handleJobCompletion; + /** + * Handle job failure + */ + private handleJobFailure; + /** + * Handle job timeout + */ + private handleJobTimeout; + private updateServerPerformance; + private sortServersByPerformance; +} +export {}; +//# sourceMappingURL=SmartPoolV2.d.ts.map \ No newline at end of file diff --git a/dist/pool/SmartPoolV2.d.ts.map b/dist/pool/SmartPoolV2.d.ts.map new file mode 100644 index 0000000..fa5ad76 --- /dev/null +++ b/dist/pool/SmartPoolV2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SmartPoolV2.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPoolV2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/SmartPoolV2.js b/dist/pool/SmartPoolV2.js new file mode 100644 index 0000000..4fdfadf --- /dev/null +++ b/dist/pool/SmartPoolV2.js @@ -0,0 +1,587 @@ +import { randomUUID } from "node:crypto"; +import { TypedEventTarget } from "../typed-event-target.js"; +import { ComfyApi } from "../client.js"; +import { PromptBuilder } from "../prompt-builder.js"; +import { MemoryQueueAdapter } from "./queue/adapters/memory.js"; +import { hashWorkflow } from "./utils/hash.js"; +// ============================================================================ +// MAIN CLASS +// ============================================================================ +export class SmartPoolV2 extends TypedEventTarget { + // Client management + clientMap = new Map(); + // Affinity groups and queues + affinityGroups = new Map(); + defaultQueue; + // Job tracking + jobStore = new Map(); + executionContexts = new Map(); + // Server state + idleServers = new Set(); + serverPerformance = new Map(); + // Pool configuration + options; + // Pool state + isReady; + readyResolve; + // ========================================================================= + // CONSTRUCTOR + // ========================================================================= + constructor(clients, options) { + super(); + this.options = { + connectionTimeoutMs: options?.connectionTimeoutMs ?? 10000, + jobExecutionTimeoutMs: options?.jobExecutionTimeoutMs ?? 5 * 60 * 1000, // 5 min + groupIdleTimeoutMs: options?.groupIdleTimeoutMs ?? 60 * 1000, // 60 sec + maxQueueDepth: options?.maxQueueDepth ?? 1000 + }; + // Initialize clients + for (const client of clients) { + if (typeof client === "string") { + const apiClient = new ComfyApi(client); + this.clientMap.set(apiClient.apiHost, apiClient); + } + else { + this.clientMap.set(client.apiHost, client); + } + } + // Create default queue for unaffinitized jobs + this.defaultQueue = this.createAffinityGroup("default", []); + // Setup ready promise + this.isReady = new Promise((resolve) => { + this.readyResolve = resolve; + }); + } + // ========================================================================= + // PUBLIC API + // ========================================================================= + /** + * Initialize pool and connect all clients + */ + async connect() { + const connectionPromises = []; + for (const [url, client] of this.clientMap.entries()) { + connectionPromises.push(new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + client.abortReconnect(); + reject(new Error(`Connection to client ${url} timed out`)); + }, this.options.connectionTimeoutMs); + client + .init(1) + .then(() => { + clearTimeout(timeout); + console.log(`[SmartPoolV2] Connected to ${url}`); + this.idleServers.add(client.apiHost); + resolve(); + }) + .catch((err) => { + clearTimeout(timeout); + reject(err); + }); + })); + } + await Promise.all(connectionPromises); + this.readyResolve?.(); + } + /** + * Wait for pool to be ready + */ + ready() { + return this.isReady; + } + /** + * Enqueue a workflow - automatically routed by workflow hash + * Optional preferredClientIds overrides default routing for this specific job + */ + async enqueue(workflow, options) { + const jobId = randomUUID(); + const workflowHash = workflow.structureHash || hashWorkflow(workflow.json || workflow); + const workflowJson = workflow.json || workflow; + const outputNodeIds = workflow.outputNodeIds || []; + const outputAliases = workflow.outputAliases || {}; + // Find group by workflow hash, fall back to default + let groupId = workflowHash; + if (!this.affinityGroups.has(groupId)) { + groupId = "default"; + } + const group = this.affinityGroups.get(groupId); + if (!group) { + throw new Error(`No affinity group for workflow hash "${workflowHash}"`); + } + // Create job record + const jobRecord = { + jobId, + workflow: workflowJson, + workflowHash, + options: { + maxAttempts: 3, + retryDelayMs: 1000, + priority: options?.priority ?? 0, + // Use per-job preferences if provided, otherwise use group defaults + preferredClientIds: options?.preferredClientIds?.length ? options.preferredClientIds : group.preferredServerIds, + excludeClientIds: [], + metadata: options?.metadata || {} + }, + attempts: 0, + enqueuedAt: Date.now(), + workflowMeta: { + outputNodeIds, + outputAliases + }, + status: "queued" + }; + // Store job + this.jobStore.set(jobId, jobRecord); + // Enqueue to group + const payload = jobRecord; + await group.queueAdapter.enqueue(payload, { priority: options?.priority ?? 0 }); + // Emit event + this.dispatchEvent(new CustomEvent("job:queued", { detail: { job: jobRecord } })); + // Trigger processing immediately (event-driven) + setImmediate(() => this.processAffinityGroup(groupId)); + return jobId; + } + /** + * Set workflow affinity - auto-creates group by workflow hash + * Maps workflow hash to preferred servers + */ + setAffinity(workflow, affinity) { + const workflowHash = hashWorkflow(workflow); + // Create group with hash as ID if doesn't exist + if (!this.affinityGroups.has(workflowHash)) { + this.createAffinityGroup(workflowHash, affinity.preferredClientIds || []); + } + const group = this.affinityGroups.get(workflowHash); + if (group) { + group.workflowHashes.add(workflowHash); + } + } + /** + * Get job by ID + */ + getJob(jobId) { + return this.jobStore.get(jobId); + } + /** + * Shutdown pool + */ + shutdown() { + // Cancel all timeouts + for (const group of this.affinityGroups.values()) { + if (group.idleTimeoutHandle) { + clearTimeout(group.idleTimeoutHandle); + } + } + if (this.defaultQueue?.idleTimeoutHandle) { + clearTimeout(this.defaultQueue.idleTimeoutHandle); + } + // Cancel all job timeouts + for (const ctx of this.executionContexts.values()) { + if (ctx.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + } + // Destroy clients + for (const client of this.clientMap.values()) { + try { + client.destroy(); + } + catch (err) { + console.error(`[SmartPoolV2] Error destroying client: ${err}`); + } + } + } + /** + * Get server performance metrics + */ + getServerPerformance(clientId) { + return this.serverPerformance.get(clientId); + } + // ========================================================================= + // PRIVATE: AFFINITY GROUP MANAGEMENT + // ========================================================================= + createAffinityGroup(groupId, preferredServerIds) { + const group = { + id: groupId, + preferredServerIds, + workflowHashes: new Set(), + queueAdapter: new MemoryQueueAdapter(), + isProcessing: false, + lastJobCompletedMs: Date.now(), + jobsEnqueued: 0, + jobsCompleted: 0, + jobsFailed: 0 + }; + this.affinityGroups.set(groupId, group); + return group; + } + // ========================================================================= + // PRIVATE: QUEUE PROCESSING (EVENT-DRIVEN) + // ========================================================================= + /** + * Process affinity group queue - triggered by events only (no polling) + */ + async processAffinityGroup(groupId) { + const group = this.affinityGroups.get(groupId); + if (!group) + return; + // Reentrancy guard: if already processing, defer + if (group.isProcessing) { + if (!group.processingDeferred) { + group.processingDeferred = new Promise((resolve) => { + setImmediate(() => { + group.isProcessing = false; + this.processAffinityGroup(groupId).then(resolve); + }); + }); + } + return group.processingDeferred; + } + group.isProcessing = true; + try { + while (true) { + // Peek at waiting jobs first + const waitingJobs = await group.queueAdapter.peek(100); + if (waitingJobs.length === 0) { + break; // No waiting jobs + } + // Get the first waiting job + const jobPayload = waitingJobs[0]; + const job = this.jobStore.get(jobPayload.jobId); + if (!job) { + // Job not found, discard from queue + await group.queueAdapter.discard(jobPayload.jobId, new Error("Job not found")); + continue; + } + // Find idle servers compatible with this specific job + // First check job's preferred clients, then group's preferred servers + const preferredServerIds = job.options.preferredClientIds?.length + ? job.options.preferredClientIds + : group.preferredServerIds; + const compatibleIdleServers = Array.from(this.idleServers).filter((serverId) => { + // If preferred servers specified (job or group), must match + if (preferredServerIds.length > 0) { + return preferredServerIds.includes(serverId); + } + return true; + }); + if (compatibleIdleServers.length === 0) { + break; // No idle compatible servers for this job + } + // Sort compatible servers by performance (fastest first) + const sortedServers = this.sortServersByPerformance(compatibleIdleServers); + const selectedServerId = sortedServers[0]; + const selectedClient = this.clientMap.get(selectedServerId); + if (!selectedClient) { + break; + } + // Reserve job + const reservation = await group.queueAdapter.reserveById(jobPayload.jobId); + if (!reservation) { + continue; + } + // Mark server as no longer idle (synchronous) + this.idleServers.delete(selectedServerId); + // Enqueue job on server (synchronous, fires in background) + await this.enqueueJobOnServer(job, selectedClient, groupId, reservation); + } + } + finally { + group.isProcessing = false; + // Check for deferred processing + if (group.processingDeferred) { + group.processingDeferred = undefined; + } + } + } + // ========================================================================= + // PRIVATE: JOB EXECUTION (NO CALLWRAPPER) + // ========================================================================= + /** + * Enqueue job on server and manage execution + */ + async enqueueJobOnServer(job, client, groupId, reservation) { + const group = this.affinityGroups.get(groupId); + if (!group) + return; + job.attempts += 1; + job.status = "running"; + job.clientId = client.apiHost; + job.startedAt = Date.now(); + try { + // Clone workflow to avoid mutations + const workflowJson = JSON.parse(JSON.stringify(job.workflow)); + const outputNodeIds = job.workflowMeta?.outputNodeIds || []; + // Auto-randomize seeds + try { + for (const node of Object.values(workflowJson)) { + const n = node; + if (n?.inputs?.seed === -1) { + n.inputs.seed = Math.floor(Math.random() * 2_147_483_647); + } + } + } + catch { + /* non-fatal */ + } + // Build prompt + const pb = new PromptBuilder(workflowJson, [], outputNodeIds); + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId, nodeId); + } + const promptJson = pb.prompt; + // Append to server queue + let queueResponse; + try { + queueResponse = await client.ext.queue.appendPrompt(promptJson); + } + catch (err) { + throw new Error(`Failed to enqueue job: ${err}`); + } + const promptId = queueResponse.prompt_id; + job.promptId = promptId; + // Create execution context + const ctx = { + job, + groupId, + promptId + }; + this.executionContexts.set(job.jobId, ctx); + // Emit accepted event + this.dispatchEvent(new CustomEvent("job:accepted", { + detail: { job, clientId: client.apiHost } + })); + this.dispatchEvent(new CustomEvent("job:started", { + detail: { job, clientId: client.apiHost, promptId } + })); + // Set up execution timeout (5 min) + ctx.timeoutHandle = setTimeout(() => { + console.warn(`[SmartPoolV2] Job ${job.jobId} execution timeout`); + this.handleJobTimeout(job.jobId); + }, this.options.jobExecutionTimeoutMs); + // Set up event listeners (strict prompt_id matching) + const outputMap = {}; + let outputsCollected = 0; + const expectedOutputCount = outputNodeIds.length; + ctx.executedHandler = (ev) => { + // Strict prompt_id check + if (ev.detail.prompt_id !== promptId) { + return; + } + const nodeId = ev.detail.node; + const output = ev.detail.output; + outputMap[nodeId] = output; + outputsCollected++; + // All outputs collected? + if (outputsCollected === expectedOutputCount) { + this.handleJobCompletion(job.jobId, groupId, outputMap, client.apiHost); + } + }; + ctx.executionSuccessHandler = async (ev) => { + if (ev.detail.prompt_id !== promptId) { + return; + } + // Try to get missing outputs from history if needed + if (outputsCollected < expectedOutputCount) { + try { + const history = await client.ext.history.getHistory(promptId); + if (history?.outputs) { + for (const [nodeIdStr, nodeOutput] of Object.entries(history.outputs)) { + const nodeId = nodeIdStr; + if (!outputMap[nodeId] && nodeOutput) { + outputMap[nodeId] = nodeOutput; + outputsCollected++; + } + } + } + } + catch { + /* non-fatal */ + } + } + // Complete job regardless + this.handleJobCompletion(job.jobId, groupId, outputMap, client.apiHost); + }; + ctx.executionErrorHandler = (ev) => { + if (ev.detail.prompt_id !== promptId) { + return; + } + const error = new Error(`Execution error: ${ev.detail.exception_type}`); + this.handleJobFailure(job.jobId, groupId, error); + }; + // Attach listeners + client.on("executed", ctx.executedHandler); + client.on("execution_success", ctx.executionSuccessHandler); + client.on("execution_error", ctx.executionErrorHandler); + // Commit to queue + await group.queueAdapter.commit(reservation.reservationId); + } + catch (err) { + const error = err instanceof Error ? err : new Error(String(err)); + // Retry or fail + if (job.attempts < job.options.maxAttempts) { + await group.queueAdapter.retry(reservation.reservationId, { + delayMs: job.options.retryDelayMs + }); + } + else { + await group.queueAdapter.discard(reservation.reservationId, error); + this.handleJobFailure(job.jobId, groupId, error); + } + // Mark server idle again + this.idleServers.add(client.apiHost); + this.dispatchEvent(new CustomEvent("server:idle", { + detail: { clientId: client.apiHost, groupId } + })); + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + } + /** + * Handle job completion + */ + handleJobCompletion(jobId, groupId, outputMap, clientId) { + const job = this.jobStore.get(jobId); + if (!job) + return; + const ctx = this.executionContexts.get(jobId); + if (ctx?.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + // Clean up listeners + if (ctx) { + const client = this.clientMap.get(clientId); + if (client) { + if (ctx.executedHandler) + client.off("executed", ctx.executedHandler); + if (ctx.executionSuccessHandler) + client.off("execution_success", ctx.executionSuccessHandler); + if (ctx.executionErrorHandler) + client.off("execution_error", ctx.executionErrorHandler); + } + } + // Update job + job.status = "completed"; + job.result = outputMap; + job.completedAt = Date.now(); + const executionTimeMs = job.completedAt - (job.startedAt || job.completedAt); + this.updateServerPerformance(clientId, executionTimeMs); + // Update group stats + const group = this.affinityGroups.get(groupId); + if (group) { + group.jobsCompleted++; + group.lastJobCompletedMs = Date.now(); + // Reset idle timeout for this group + if (group.idleTimeoutHandle) { + clearTimeout(group.idleTimeoutHandle); + } + group.idleTimeoutHandle = setTimeout(() => { + this.dispatchEvent(new CustomEvent("group:idle-timeout", { + detail: { groupId, reason: "No jobs completed in idle threshold" } + })); + }, this.options.groupIdleTimeoutMs); + } + // Mark server idle + this.idleServers.add(clientId); + this.dispatchEvent(new CustomEvent("server:idle", { + detail: { clientId, groupId } + })); + // Emit completed event + this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + // Clean up context + this.executionContexts.delete(jobId); + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + /** + * Handle job failure + */ + handleJobFailure(jobId, groupId, error) { + const job = this.jobStore.get(jobId); + if (!job) + return; + const ctx = this.executionContexts.get(jobId); + if (ctx?.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + // Clean up listeners + if (ctx && job.clientId) { + const client = this.clientMap.get(job.clientId); + if (client) { + if (ctx.executedHandler) + client.off("executed", ctx.executedHandler); + if (ctx.executionSuccessHandler) + client.off("execution_success", ctx.executionSuccessHandler); + if (ctx.executionErrorHandler) + client.off("execution_error", ctx.executionErrorHandler); + } + } + job.status = "failed"; + job.lastError = error; + job.completedAt = Date.now(); + // Update group stats + const group = this.affinityGroups.get(groupId); + if (group) { + group.jobsFailed++; + } + // Mark server idle + if (job.clientId) { + this.idleServers.add(job.clientId); + this.dispatchEvent(new CustomEvent("server:idle", { + detail: { clientId: job.clientId, groupId } + })); + } + // Emit failed event + this.dispatchEvent(new CustomEvent("job:failed", { + detail: { job, error, willRetry: false } + })); + // Clean up context + this.executionContexts.delete(jobId); + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + /** + * Handle job timeout + */ + handleJobTimeout(jobId) { + const job = this.jobStore.get(jobId); + if (!job) + return; + const ctx = this.executionContexts.get(jobId); + const groupId = ctx?.groupId || "default"; + const error = new Error(`Job execution timeout after ${this.options.jobExecutionTimeoutMs}ms`); + this.handleJobFailure(jobId, groupId, error); + } + // ========================================================================= + // PRIVATE: PERFORMANCE TRACKING + // ========================================================================= + updateServerPerformance(clientId, executionTimeMs) { + let metrics = this.serverPerformance.get(clientId); + if (!metrics) { + metrics = { + clientId, + totalJobsCompleted: 0, + totalExecutionTimeMs: 0, + averageExecutionTimeMs: 0 + }; + this.serverPerformance.set(clientId, metrics); + } + metrics.totalJobsCompleted++; + metrics.totalExecutionTimeMs += executionTimeMs; + metrics.lastJobDurationMs = executionTimeMs; + metrics.averageExecutionTimeMs = metrics.totalExecutionTimeMs / metrics.totalJobsCompleted; + } + sortServersByPerformance(serverIds) { + return [...serverIds].sort((a, b) => { + const metricsA = this.serverPerformance.get(a); + const metricsB = this.serverPerformance.get(b); + // Untracked servers go to end + if (!metricsA) + return 1; + if (!metricsB) + return -1; + return metricsA.averageExecutionTimeMs - metricsB.averageExecutionTimeMs; + }); + } +} +//# sourceMappingURL=SmartPoolV2.js.map \ No newline at end of file diff --git a/dist/pool/SmartPoolV2.js.map b/dist/pool/SmartPoolV2.js.map new file mode 100644 index 0000000..4f63634 --- /dev/null +++ b/dist/pool/SmartPoolV2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"SmartPoolV2.js","sourceRoot":"","sources":["../../src/pool/SmartPoolV2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pool/index.d.ts b/dist/pool/index.d.ts index 4921873..6a09799 100644 --- a/dist/pool/index.d.ts +++ b/dist/pool/index.d.ts @@ -1,5 +1,6 @@ export { WorkflowPool } from "./WorkflowPool.js"; export { SmartPool } from "./SmartPool.js"; +export { SmartPoolV2 } from "./SmartPoolV2.js"; export type { WorkflowPoolOpts } from "./WorkflowPool.js"; export type { WorkflowPoolEventMap } from "./types/events.js"; export type { JobRecord, JobStatus, WorkflowJobOptions } from "./types/job.js"; diff --git a/dist/pool/index.d.ts.map b/dist/pool/index.d.ts.map index bf3fa70..cfd4bda 100644 --- a/dist/pool/index.d.ts.map +++ b/dist/pool/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"} \ No newline at end of file diff --git a/dist/pool/index.js b/dist/pool/index.js index f631bf7..2470fbd 100644 --- a/dist/pool/index.js +++ b/dist/pool/index.js @@ -1,5 +1,6 @@ export { WorkflowPool } from "./WorkflowPool.js"; export { SmartPool } from "./SmartPool.js"; +export { SmartPoolV2 } from "./SmartPoolV2.js"; export { MemoryQueueAdapter } from "./queue/adapters/memory.js"; export { SmartFailoverStrategy } from "./failover/SmartFailoverStrategy.js"; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/pool/index.js.map b/dist/pool/index.js.map index 3920f1d..8b83a6e 100644 --- a/dist/pool/index.js.map +++ b/dist/pool/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC"} \ No newline at end of file diff --git a/scripts/smartpoolv2-two-stage-simulation.ts b/scripts/smartpoolv2-two-stage-simulation.ts new file mode 100644 index 0000000..c3ac0b8 --- /dev/null +++ b/scripts/smartpoolv2-two-stage-simulation.ts @@ -0,0 +1,380 @@ +import { JobRecord, SmartPoolV2 } from "../src/index.ts"; +import { hashWorkflow } from "../src/pool/utils/hash.ts"; +import { log, nextSeed, pickRandom, randomInt, uploadImage } from "./simulator/helpers.ts"; +import { buildEditWorkflow, buildGenerationWorkflow } from "./simulator/workflows.ts"; +import GenerationGraph from "./workflows/T2I-anime-nova-xl.json" assert { type: "json" }; +import EditGraph from "./workflows/quick-edit-test.json" assert { type: "json" }; + +const DEFAULT_HOSTS = [ + "http://afterpic-comfy-igor:8188", + "http://afterpic-comfy-aero16:8188", + "http://afterpic-comfy-domi:8188", + "http://afterpic-comfy-patrick:8188" +]; + +const GEN_HOST = "http://afterpic-comfy-aero16:8188"; + +const EDIT_HOSTS = [ + "http://afterpic-comfy-igor:8188", + "http://afterpic-comfy-domi:8188", + "http://afterpic-comfy-patrick:8188" +]; + +const hosts = process.env.TWO_STAGE_HOSTS + ? process.env.TWO_STAGE_HOSTS.split(",") + .map((h) => h.trim()) + .filter(Boolean) + : DEFAULT_HOSTS; + +if (hosts.length === 0) { + console.error("No hosts configured. Provide TWO_STAGE_HOSTS or ensure defaults are reachable."); + process.exit(1); +} + +const runtimeMs = Number.isFinite(Number(process.env.TWO_STAGE_RUNTIME_MS)) + ? Number(process.env.TWO_STAGE_RUNTIME_MS) + : 1 * 60 * 60 * 1000; // 1 hour + +let minDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MIN_DELAY_MS)) + ? Number(process.env.TWO_STAGE_MIN_DELAY_MS) + : 10000; // 10 seconds + +let maxDelayMs = Number.isFinite(Number(process.env.TWO_STAGE_MAX_DELAY_MS)) + ? Number(process.env.TWO_STAGE_MAX_DELAY_MS) + : 25000; // 25 seconds + +if (minDelayMs > maxDelayMs) { + console.warn(`Swapping min/max delay: ${minDelayMs} > ${maxDelayMs}`); + const tmp = minDelayMs; + minDelayMs = maxDelayMs; + maxDelayMs = tmp; +} + +const generationPrompts = (process.env.TWO_STAGE_GEN_PROMPTS || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (generationPrompts.length === 0) { + generationPrompts.push( + "cinematic portrait of a spacefarer gazing at a nebula", + "lush forest clearing at dawn with crystalline waterfalls and ethereal wildlife", + "retro-futuristic city skyline at sunset with hovering ships", + "battle-ready mage summoning luminous glyphs in a ruined cathedral", + "steampunk explorer overlooking a floating archipelago", + "mythic beast emerging from misty mountains", + "mecha pilot preparing for launch on an illuminated runway", + "ancient library guarded by arcane spirits" + ); +} + +const generationNegatives = (process.env.TWO_STAGE_GEN_NEGATIVES || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (generationNegatives.length === 0) { + generationNegatives.push( + "lowres, blurry, bad anatomy, extra limbs, watermark, text, signature, nsfw", + "poor lighting, washed out colors, distorted perspective, nsfw", + "cropped face, missing fingers, artifacts, posterization, nsfw", + "muted colors, flat lighting, repetitive patterns, nsfw" + ); +} + +const editPrompts = (process.env.TWO_STAGE_EDIT_PROMPTS || "") + .split("||") + .map((s) => s.trim()) + .filter(Boolean); + +if (editPrompts.length === 0) { + editPrompts.push( + "Shift to a nighttime scene with glowing lanterns and gentle rain, add reflective puddles", + "Transform into a winter landscape with snowfall and frosted trees, keep main subject", + "Reimagine as a bustling cyberpunk alley filled with holographic signs and neon rain", + "Convert the environment to a tranquil seaside at sunrise with warm golden lighting", + "Reframe as an autumn festival with floating lanterns and soft embers", + "Turn into a bioluminescent jungle with fog and glowing flora", + "Adapt into a desert oasis at twilight with swirling dust and warm rim light" + ); +} + +let jobCount = 0; +let successCount = 0; +let failCount = 0; +const startTime = Date.now(); + +/** + * Helper to wait for SmartPoolV2 job completion + */ +function waitForSmartPoolV2Job(pool: SmartPoolV2, jobId: string): Promise { + const job = pool.getJob(jobId); + if (job) { + if (job.status === "completed") { + return Promise.resolve(job); + } + if (job.status === "failed" || job.status === "cancelled") { + return Promise.reject(job); + } + } + + return new Promise((resolve, reject) => { + const completedListener = (e: CustomEvent<{ job: JobRecord }>) => { + try { + const job = e.detail.job as any; + if (job.id === jobId || job.jobId === jobId) { + cleanUp(); + resolve(e.detail.job); + } + } catch (error) { + console.error("Error in job:completed listener:", error); + } + }; + const failedListener = (e: CustomEvent<{ job: JobRecord; willRetry?: boolean }>) => { + try { + const job = e.detail.job as any; + if ((job.id === jobId || job.jobId === jobId) && !e.detail.willRetry) { + cleanUp(); + reject(e.detail.job); + } + } catch (error) { + console.error("Error in job:failed listener:", error); + } + }; + const cleanUp = () => { + pool.off("job:completed", completedListener as any); + pool.off("job:failed", failedListener as any); + }; + pool.on("job:completed", completedListener as any); + pool.on("job:failed", failedListener as any); + }); +} + +/** + * Main simulation function + */ +async function runSimulation() { + log("blue", `[SmartPoolV2 Two-Stage Simulation] Starting with ${hosts.length} hosts: ${hosts.join(", ")}`); + log("blue", `Generation host: ${GEN_HOST}, Edit hosts: ${EDIT_HOSTS.join(", ")}`); + + const pool = new SmartPoolV2(hosts); + await pool.connect(); + + // Set affinity: generation jobs go to GEN_HOST, edit jobs go to EDIT_HOSTS + // Workflow hash automatically becomes the group ID + pool.setAffinity(GenerationGraph, { + preferredClientIds: [GEN_HOST] + }); + + pool.setAffinity(EditGraph, { + preferredClientIds: EDIT_HOSTS + }); + + log("green", `[SmartPoolV2 Two-Stage Simulation] Affinities configured`); + log("green", ` Generation: ${GEN_HOST}`); + log("green", ` Edit: ${EDIT_HOSTS.join(", ")}`); + + // Listen to job events for logging + pool.on("job:queued", (e: any) => { + jobCount++; + log("cyan", `[Job ${jobCount}] Queued: ${e.detail.job.jobId.substring(0, 8)}...`); + }); + + pool.on("job:completed", (e: any) => { + successCount++; + log("green", `[✓ Success ${successCount}] Job ${e.detail.job.jobId.substring(0, 8)}... completed`); + }); + + pool.on("job:failed", (e: any) => { + failCount++; + const job = e.detail.job; + const error = e.detail.error; + const errorMsg = error instanceof Error ? error.message : String(error); + log("red", `[✗ Failed ${failCount}] Job ${job.jobId.substring(0, 8)}... failed: ${errorMsg}`); + }); + + const runtimeEnd = startTime + runtimeMs; + const generatedImages: Array<{ jobId: string; genClientId: string; imageRecord: any; prompts: string[] }> = []; + let currentlyQueuedGenJobs = 0; + let enqueueGenContinuously = true; + const maxPrefill = 2; + + // Producer task: continuously enqueue generation jobs + const producerTask = (async () => { + try { + while (enqueueGenContinuously && Date.now() < runtimeEnd) { + if (currentlyQueuedGenJobs >= maxPrefill) { + await new Promise((resolve) => setTimeout(resolve, 100)); + continue; + } + + const genPrompt = pickRandom(generationPrompts); + const genNegative = pickRandom(generationNegatives); + const genSeed = nextSeed("random"); + const genWorkflow = buildGenerationWorkflow(genPrompt, genNegative, genSeed); + + log("yellow", `[Gen] Enqueuing generation: "${genPrompt.substring(0, 40)}..."`); + const genJobId = await pool.enqueue(genWorkflow); + currentlyQueuedGenJobs++; + + const userThinkTime = randomInt(minDelayMs, maxDelayMs); + await new Promise((resolve) => setTimeout(resolve, userThinkTime)); + + // Fire-and-forget: wait for generation in background + waitForSmartPoolV2Job(pool, genJobId) + .then((genJob) => { + log("green", `[Gen] Generation completed for job ${genJobId.substring(0, 8)}...`); + + const basePreview = (genJob.result as any).base_preview ?? (genJob.result as any)["12"]; + const records = Array.isArray(basePreview?.images) + ? basePreview.images + : Array.isArray(basePreview) + ? basePreview + : basePreview + ? [basePreview] + : []; + + if (records.length > 0) { + const editsPerGeneration = randomInt(1, 3); + const editPromptList = Array.from({ length: editsPerGeneration }, () => + pickRandom(editPrompts) + ); + generatedImages.push({ + jobId: genJobId, + genClientId: genJob.clientId || GEN_HOST, + imageRecord: records[0], + prompts: editPromptList + }); + log("cyan", `[Queue] Image ${genJobId.substring(0, 8)}... queued for ${editsPerGeneration} edits`); + } + + currentlyQueuedGenJobs--; + }) + .catch((e) => { + log("red", `[Gen] Generation failed: ${e}`); + currentlyQueuedGenJobs--; + }); + + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } catch (error) { + log("red", `[Producer] Error: ${error}`); + } + })(); + + // Consumer task: process edits on available images + const consumerTask = (async () => { + try { + while (Date.now() < runtimeEnd) { + if (generatedImages.length === 0) { + await new Promise((resolve) => setTimeout(resolve, 100)); + continue; + } + + const sourceGen = generatedImages[0]; + if (sourceGen.prompts.length === 0) { + log("cyan", `[Queue] Image ${sourceGen.jobId.substring(0, 8)}... finished all edits`); + generatedImages.shift(); + continue; + } + + const editPrompt = sourceGen.prompts.shift()!; + const targetEditClientId = pickRandom(EDIT_HOSTS); + + log("yellow", `[Edit] Preparing edit from ${sourceGen.jobId.substring(0, 8)}...: "${editPrompt.substring(0, 40)}..."`); + + try { + const genClient = pool["clientMap"]?.get(sourceGen.genClientId); + if (!genClient) { + log("red", `[Edit] ERROR: Generation client ${sourceGen.genClientId} not found`); + sourceGen.prompts.unshift(editPrompt); + await new Promise((resolve) => setTimeout(resolve, 500)); + continue; + } + + const targetEditClient = pool["clientMap"]?.get(targetEditClientId); + if (!targetEditClient) { + log("red", `[Edit] ERROR: Edit client ${targetEditClientId} not found`); + sourceGen.prompts.unshift(editPrompt); + await new Promise((resolve) => setTimeout(resolve, 500)); + continue; + } + + try { + const imageUrl = genClient.ext.file.getPathImage(sourceGen.imageRecord as any); + const uploadName = `two-stage-v2-${Date.now()}-${Math.random().toString(16).slice(2)}.png`; + await uploadImage(imageUrl, uploadName, targetEditClient); + log("cyan", `[Edit] Uploaded image to ${uploadName} on ${targetEditClientId}`); + + const editWorkflow = buildEditWorkflow(uploadName, editPrompt, nextSeed("random")); + const editJobId = await pool.enqueue(editWorkflow, { + preferredClientIds: [targetEditClientId] + }); + log("cyan", `[Edit] Enqueued edit job ${editJobId.substring(0, 8)}... on ${targetEditClientId}`); + + const userEditThinkTime = randomInt(Math.floor(minDelayMs * 0.5), Math.floor(maxDelayMs * 0.5)); + await new Promise((resolve) => setTimeout(resolve, userEditThinkTime)); + + waitForSmartPoolV2Job(pool, editJobId) + .then(() => { + log("green", `[✓ Edit Success] Job ${editJobId.substring(0, 8)}... completed`); + }) + .catch((failedJob) => { + const errorMsg = failedJob?.lastError?.message || failedJob?.error?.message || String(failedJob); + log("red", `[Edit] Edit job ${editJobId.substring(0, 8)}... failed: ${errorMsg}`); + }); + } catch (uploadError) { + log("red", `[Edit] ERROR uploading image: ${uploadError}`); + sourceGen.prompts.unshift(editPrompt); + } + } catch (error) { + log("red", `[Edit] ERROR preparing edit: ${error}`); + sourceGen.prompts.unshift(editPrompt); + } + + await new Promise((resolve) => setTimeout(resolve, 300)); + } + } catch (error) { + log("red", `[Consumer] FATAL ERROR: ${error}`); + } + })(); + + try { + await Promise.all([ + producerTask, + consumerTask + ]).catch((error) => { + if (error.message !== "Simulation timeout") { + log("red", `[Task error] ${error}`); + } + }); + } catch (error) { + log("red", `[Simulation] Error during execution: ${error}`); + } finally { + enqueueGenContinuously = false; + pool.shutdown(); + const totalDurationMs = Date.now() - startTime; + const totalDurationSecs = (totalDurationMs / 1000).toFixed(1); + const successRate = ((successCount / (successCount + failCount)) * 100).toFixed(1); + + console.log("\n" + "=".repeat(80)); + log("bold", `[SmartPoolV2 Two-Stage Simulation] Final Summary`); + console.log("=".repeat(80)); + log("cyan", `Total Jobs: ${jobCount}`); + log("green", `Successful: ${successCount}`); + log("red", `Failed: ${failCount}`); + log("blue", `Success Rate: ${successRate}%`); + log("magenta", `Total Duration: ${totalDurationSecs}s`); + log("magenta", `Avg Job Time: ${(totalDurationMs / Math.max(1, jobCount)).toFixed(0)}ms`); + console.log("=".repeat(80) + "\n"); + + if (failCount > 0) { + process.exit(1); + } + } +} + +runSimulation().catch((error) => { + log("red", `[SmartPoolV2 Two-Stage Simulation] Fatal error: ${error}`); + process.exit(1); +}); diff --git a/src/index.ts b/src/index.ts index 80204fb..7ae6817 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ export { ComfyApi } from "./client.js"; export { CallWrapper } from "./call-wrapper.js"; export { ComfyPool, EQueueMode } from "./pool.js"; -export { WorkflowPool, SmartPool, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; +export { WorkflowPool, SmartPool, SmartPoolV2, MemoryQueueAdapter, SmartFailoverStrategy } from "./pool/index.js"; export { PromptBuilder } from "./prompt-builder.js"; export { Workflow, WorkflowJob } from "./workflow.js"; export type { AugmentNodes, SamplerName, SchedulerName } from "./node-type-hints.js"; diff --git a/src/pool/SmartPoolV2.ts b/src/pool/SmartPoolV2.ts new file mode 100644 index 0000000..b2fc409 --- /dev/null +++ b/src/pool/SmartPoolV2.ts @@ -0,0 +1,787 @@ +import { randomUUID } from "node:crypto"; +import { TypedEventTarget } from "../typed-event-target.js"; +import { ComfyApi } from "../client.js"; +import { Workflow } from "../workflow.js"; +import { PromptBuilder } from "../prompt-builder.js"; +import { MemoryQueueAdapter } from "./queue/adapters/memory.js"; +import type { QueueAdapter, QueueReservation } from "./queue/QueueAdapter.js"; +import type { WorkflowAffinity } from "./types/affinity.js"; +import type { JobId, JobRecord, WorkflowJobPayload } from "./types/job.js"; +import { hashWorkflow } from "./utils/hash.js"; + +// ============================================================================ +// TYPE DEFINITIONS +// ============================================================================ + +interface SmartPoolV2Options { + connectionTimeoutMs?: number; + jobExecutionTimeoutMs?: number; // Per-job timeout (5 min default) + groupIdleTimeoutMs?: number; // Per-group idle timeout (60 sec default) + maxQueueDepth?: number; // Max jobs per queue +} + +interface AffinityGroupQueue { + id: string; + preferredServerIds: string[]; + workflowHashes: Set; + queueAdapter: QueueAdapter; + + // State tracking + isProcessing: boolean; + lastJobCompletedMs: number; + idleTimeoutHandle?: NodeJS.Timeout; + processingDeferred?: Promise; + + // Metrics + jobsEnqueued: number; + jobsCompleted: number; + jobsFailed: number; +} + +interface JobExecutionContext { + job: JobRecord; + groupId: string; + promptId?: string; + result?: Record; + error?: Error; + completedAt?: number; + + // Event listeners for cleanup + executedHandler?: (ev: CustomEvent) => void; + executionSuccessHandler?: (ev: CustomEvent) => void; + executionErrorHandler?: (ev: CustomEvent) => void; + + // Timeout tracking + timeoutHandle?: NodeJS.Timeout; +} + +interface ServerPerformanceMetrics { + clientId: string; + totalJobsCompleted: number; + totalExecutionTimeMs: number; + averageExecutionTimeMs: number; + lastJobDurationMs?: number; +} + +interface SmartPoolV2EventMap extends Record> { + "job:queued": CustomEvent<{ job: JobRecord }>; + "job:accepted": CustomEvent<{ job: JobRecord; clientId: string }>; + "job:started": CustomEvent<{ job: JobRecord; clientId: string; promptId: string }>; + "job:completed": CustomEvent<{ job: JobRecord }>; + "job:failed": CustomEvent<{ job: JobRecord; error: Error; willRetry?: boolean }>; + "group:idle-timeout": CustomEvent<{ groupId: string; reason: string }>; + "server:idle": CustomEvent<{ clientId: string; groupId?: string }>; +} + +// ============================================================================ +// MAIN CLASS +// ============================================================================ + +export class SmartPoolV2 extends TypedEventTarget { + // Client management + private clientMap: Map = new Map(); + + // Affinity groups and queues + private affinityGroups: Map = new Map(); + private defaultQueue?: AffinityGroupQueue; + + // Job tracking + private jobStore: Map = new Map(); + private executionContexts: Map = new Map(); + + // Server state + private idleServers: Set = new Set(); + private serverPerformance: Map = new Map(); + + // Pool configuration + private options: Required; + + // Pool state + private isReady: Promise; + private readyResolve?: () => void; + + // ========================================================================= + // CONSTRUCTOR + // ========================================================================= + + constructor( + clients: (ComfyApi | string)[], + options?: SmartPoolV2Options + ) { + super(); + + this.options = { + connectionTimeoutMs: options?.connectionTimeoutMs ?? 10000, + jobExecutionTimeoutMs: options?.jobExecutionTimeoutMs ?? 5 * 60 * 1000, // 5 min + groupIdleTimeoutMs: options?.groupIdleTimeoutMs ?? 60 * 1000, // 60 sec + maxQueueDepth: options?.maxQueueDepth ?? 1000 + }; + + // Initialize clients + for (const client of clients) { + if (typeof client === "string") { + const apiClient = new ComfyApi(client); + this.clientMap.set(apiClient.apiHost, apiClient); + } else { + this.clientMap.set(client.apiHost, client); + } + } + + // Create default queue for unaffinitized jobs + this.defaultQueue = this.createAffinityGroup("default", []); + + // Setup ready promise + this.isReady = new Promise((resolve) => { + this.readyResolve = resolve; + }); + } + + // ========================================================================= + // PUBLIC API + // ========================================================================= + + /** + * Initialize pool and connect all clients + */ + async connect(): Promise { + const connectionPromises: Promise[] = []; + + for (const [url, client] of this.clientMap.entries()) { + connectionPromises.push( + new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + client.abortReconnect(); + reject(new Error(`Connection to client ${url} timed out`)); + }, this.options.connectionTimeoutMs); + + client + .init(1) + .then(() => { + clearTimeout(timeout); + console.log(`[SmartPoolV2] Connected to ${url}`); + this.idleServers.add(client.apiHost); + resolve(); + }) + .catch((err) => { + clearTimeout(timeout); + reject(err); + }); + }) + ); + } + + await Promise.all(connectionPromises); + this.readyResolve?.(); + } + + /** + * Wait for pool to be ready + */ + ready(): Promise { + return this.isReady; + } + + /** + * Enqueue a workflow - automatically routed by workflow hash + * Optional preferredClientIds overrides default routing for this specific job + */ + async enqueue( + workflow: Workflow, + options?: { + preferredClientIds?: string[]; + priority?: number; + metadata?: Record; + } + ): Promise { + const jobId = randomUUID(); + const workflowHash = workflow.structureHash || hashWorkflow((workflow as any).json || workflow); + const workflowJson = (workflow as any).json || workflow; + const outputNodeIds = (workflow as any).outputNodeIds || []; + const outputAliases = (workflow as any).outputAliases || {}; + + // Find group by workflow hash, fall back to default + let groupId = workflowHash; + if (!this.affinityGroups.has(groupId)) { + groupId = "default"; + } + const group = this.affinityGroups.get(groupId); + + if (!group) { + throw new Error(`No affinity group for workflow hash "${workflowHash}"`); + } + + // Create job record + const jobRecord: JobRecord = { + jobId, + workflow: workflowJson, + workflowHash, + options: { + maxAttempts: 3, + retryDelayMs: 1000, + priority: options?.priority ?? 0, + // Use per-job preferences if provided, otherwise use group defaults + preferredClientIds: options?.preferredClientIds?.length ? options.preferredClientIds : group.preferredServerIds, + excludeClientIds: [], + metadata: options?.metadata || {} + }, + attempts: 0, + enqueuedAt: Date.now(), + workflowMeta: { + outputNodeIds, + outputAliases + }, + status: "queued" + }; + + // Store job + this.jobStore.set(jobId, jobRecord); + + // Enqueue to group + const payload: WorkflowJobPayload = jobRecord; + await group.queueAdapter.enqueue(payload, { priority: options?.priority ?? 0 }); + + // Emit event + this.dispatchEvent(new CustomEvent("job:queued", { detail: { job: jobRecord } })); + + // Trigger processing immediately (event-driven) + setImmediate(() => this.processAffinityGroup(groupId)); + + return jobId; + } + + /** + * Set workflow affinity - auto-creates group by workflow hash + * Maps workflow hash to preferred servers + */ + setAffinity( + workflow: object, + affinity: Omit + ): void { + const workflowHash = hashWorkflow(workflow); + + // Create group with hash as ID if doesn't exist + if (!this.affinityGroups.has(workflowHash)) { + this.createAffinityGroup(workflowHash, affinity.preferredClientIds || []); + } + + const group = this.affinityGroups.get(workflowHash); + if (group) { + group.workflowHashes.add(workflowHash); + } + } + + /** + * Get job by ID + */ + getJob(jobId: JobId): JobRecord | undefined { + return this.jobStore.get(jobId); + } + + /** + * Shutdown pool + */ + shutdown(): void { + // Cancel all timeouts + for (const group of this.affinityGroups.values()) { + if (group.idleTimeoutHandle) { + clearTimeout(group.idleTimeoutHandle); + } + } + if (this.defaultQueue?.idleTimeoutHandle) { + clearTimeout(this.defaultQueue.idleTimeoutHandle); + } + + // Cancel all job timeouts + for (const ctx of this.executionContexts.values()) { + if (ctx.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + } + + // Destroy clients + for (const client of this.clientMap.values()) { + try { + client.destroy(); + } catch (err) { + console.error(`[SmartPoolV2] Error destroying client: ${err}`); + } + } + } + + /** + * Get server performance metrics + */ + getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined { + return this.serverPerformance.get(clientId); + } + + // ========================================================================= + // PRIVATE: AFFINITY GROUP MANAGEMENT + // ========================================================================= + + private createAffinityGroup( + groupId: string, + preferredServerIds: string[] + ): AffinityGroupQueue { + const group: AffinityGroupQueue = { + id: groupId, + preferredServerIds, + workflowHashes: new Set(), + queueAdapter: new MemoryQueueAdapter(), + isProcessing: false, + lastJobCompletedMs: Date.now(), + jobsEnqueued: 0, + jobsCompleted: 0, + jobsFailed: 0 + }; + + this.affinityGroups.set(groupId, group); + return group; + } + + // ========================================================================= + // PRIVATE: QUEUE PROCESSING (EVENT-DRIVEN) + // ========================================================================= + + /** + * Process affinity group queue - triggered by events only (no polling) + */ + private async processAffinityGroup(groupId: string): Promise { + const group = this.affinityGroups.get(groupId); + if (!group) return; + + // Reentrancy guard: if already processing, defer + if (group.isProcessing) { + if (!group.processingDeferred) { + group.processingDeferred = new Promise((resolve) => { + setImmediate(() => { + group.isProcessing = false; + this.processAffinityGroup(groupId).then(resolve); + }); + }); + } + return group.processingDeferred; + } + + group.isProcessing = true; + + try { + while (true) { + // Peek at waiting jobs first + const waitingJobs = await group.queueAdapter.peek(100); + if (waitingJobs.length === 0) { + break; // No waiting jobs + } + + // Get the first waiting job + const jobPayload = waitingJobs[0]; + const job = this.jobStore.get(jobPayload.jobId); + + if (!job) { + // Job not found, discard from queue + await group.queueAdapter.discard(jobPayload.jobId, new Error("Job not found")); + continue; + } + + // Find idle servers compatible with this specific job + // First check job's preferred clients, then group's preferred servers + const preferredServerIds = job.options.preferredClientIds?.length + ? job.options.preferredClientIds + : group.preferredServerIds; + + const compatibleIdleServers = Array.from(this.idleServers).filter((serverId) => { + // If preferred servers specified (job or group), must match + if (preferredServerIds.length > 0) { + return preferredServerIds.includes(serverId); + } + return true; + }); + + if (compatibleIdleServers.length === 0) { + break; // No idle compatible servers for this job + } + + // Sort compatible servers by performance (fastest first) + const sortedServers = this.sortServersByPerformance(compatibleIdleServers); + const selectedServerId = sortedServers[0]; + const selectedClient = this.clientMap.get(selectedServerId); + + if (!selectedClient) { + break; + } + + // Reserve job + const reservation = await group.queueAdapter.reserveById(jobPayload.jobId); + if (!reservation) { + continue; + } + + // Mark server as no longer idle (synchronous) + this.idleServers.delete(selectedServerId); + + // Enqueue job on server (synchronous, fires in background) + await this.enqueueJobOnServer(job, selectedClient, groupId, reservation); + } + } finally { + group.isProcessing = false; + + // Check for deferred processing + if (group.processingDeferred) { + group.processingDeferred = undefined; + } + } + } + + // ========================================================================= + // PRIVATE: JOB EXECUTION (NO CALLWRAPPER) + // ========================================================================= + + /** + * Enqueue job on server and manage execution + */ + private async enqueueJobOnServer( + job: JobRecord, + client: ComfyApi, + groupId: string, + reservation: QueueReservation + ): Promise { + const group = this.affinityGroups.get(groupId); + if (!group) return; + + job.attempts += 1; + job.status = "running"; + job.clientId = client.apiHost; + job.startedAt = Date.now(); + + try { + // Clone workflow to avoid mutations + const workflowJson = JSON.parse(JSON.stringify(job.workflow)); + const outputNodeIds = job.workflowMeta?.outputNodeIds || []; + + // Auto-randomize seeds + try { + for (const node of Object.values(workflowJson)) { + const n = node as any; + if (n?.inputs?.seed === -1) { + n.inputs.seed = Math.floor(Math.random() * 2_147_483_647); + } + } + } catch { + /* non-fatal */ + } + + // Build prompt + const pb = new PromptBuilder(workflowJson, [], outputNodeIds); + for (const nodeId of outputNodeIds) { + pb.setOutputNode(nodeId as any, nodeId as any); + } + const promptJson = pb.prompt; + + // Append to server queue + let queueResponse; + try { + queueResponse = await client.ext.queue.appendPrompt(promptJson); + } catch (err) { + throw new Error(`Failed to enqueue job: ${err}`); + } + + const promptId = queueResponse.prompt_id; + job.promptId = promptId; + + // Create execution context + const ctx: JobExecutionContext = { + job, + groupId, + promptId + }; + this.executionContexts.set(job.jobId, ctx); + + // Emit accepted event + this.dispatchEvent( + new CustomEvent("job:accepted", { + detail: { job, clientId: client.apiHost } + }) + ); + + this.dispatchEvent( + new CustomEvent("job:started", { + detail: { job, clientId: client.apiHost, promptId } + }) + ); + + // Set up execution timeout (5 min) + ctx.timeoutHandle = setTimeout(() => { + console.warn(`[SmartPoolV2] Job ${job.jobId} execution timeout`); + this.handleJobTimeout(job.jobId); + }, this.options.jobExecutionTimeoutMs); + + // Set up event listeners (strict prompt_id matching) + const outputMap: Record = {}; + let outputsCollected = 0; + const expectedOutputCount = outputNodeIds.length; + + ctx.executedHandler = (ev: CustomEvent) => { + // Strict prompt_id check + if (ev.detail.prompt_id !== promptId) { + return; + } + + const nodeId = ev.detail.node; + const output = ev.detail.output; + + outputMap[nodeId] = output; + outputsCollected++; + + // All outputs collected? + if (outputsCollected === expectedOutputCount) { + this.handleJobCompletion(job.jobId, groupId, outputMap, client.apiHost); + } + }; + + ctx.executionSuccessHandler = async (ev: CustomEvent) => { + if (ev.detail.prompt_id !== promptId) { + return; + } + + // Try to get missing outputs from history if needed + if (outputsCollected < expectedOutputCount) { + try { + const history = await client.ext.history.getHistory(promptId); + if (history?.outputs) { + for (const [nodeIdStr, nodeOutput] of Object.entries(history.outputs)) { + const nodeId = nodeIdStr; + if (!outputMap[nodeId] && nodeOutput) { + outputMap[nodeId] = nodeOutput; + outputsCollected++; + } + } + } + } catch { + /* non-fatal */ + } + } + + // Complete job regardless + this.handleJobCompletion(job.jobId, groupId, outputMap, client.apiHost); + }; + + ctx.executionErrorHandler = (ev: CustomEvent) => { + if (ev.detail.prompt_id !== promptId) { + return; + } + + const error = new Error(`Execution error: ${ev.detail.exception_type}`); + this.handleJobFailure(job.jobId, groupId, error); + }; + + // Attach listeners + client.on("executed", ctx.executedHandler as any); + client.on("execution_success", ctx.executionSuccessHandler as any); + client.on("execution_error", ctx.executionErrorHandler as any); + + // Commit to queue + await group.queueAdapter.commit(reservation.reservationId); + } catch (err) { + const error = err instanceof Error ? err : new Error(String(err)); + + // Retry or fail + if (job.attempts < job.options.maxAttempts) { + await group.queueAdapter.retry(reservation.reservationId, { + delayMs: job.options.retryDelayMs + }); + } else { + await group.queueAdapter.discard(reservation.reservationId, error); + this.handleJobFailure(job.jobId, groupId, error); + } + + // Mark server idle again + this.idleServers.add(client.apiHost); + this.dispatchEvent( + new CustomEvent("server:idle", { + detail: { clientId: client.apiHost, groupId } + }) + ); + + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + } + + /** + * Handle job completion + */ + private handleJobCompletion( + jobId: JobId, + groupId: string, + outputMap: Record, + clientId: string + ): void { + const job = this.jobStore.get(jobId); + if (!job) return; + + const ctx = this.executionContexts.get(jobId); + if (ctx?.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + + // Clean up listeners + if (ctx) { + const client = this.clientMap.get(clientId); + if (client) { + if (ctx.executedHandler) client.off("executed", ctx.executedHandler as any); + if (ctx.executionSuccessHandler) client.off("execution_success", ctx.executionSuccessHandler as any); + if (ctx.executionErrorHandler) client.off("execution_error", ctx.executionErrorHandler as any); + } + } + + // Update job + job.status = "completed"; + job.result = outputMap; + job.completedAt = Date.now(); + + const executionTimeMs = job.completedAt - (job.startedAt || job.completedAt); + this.updateServerPerformance(clientId, executionTimeMs); + + // Update group stats + const group = this.affinityGroups.get(groupId); + if (group) { + group.jobsCompleted++; + group.lastJobCompletedMs = Date.now(); + + // Reset idle timeout for this group + if (group.idleTimeoutHandle) { + clearTimeout(group.idleTimeoutHandle); + } + group.idleTimeoutHandle = setTimeout(() => { + this.dispatchEvent( + new CustomEvent("group:idle-timeout", { + detail: { groupId, reason: "No jobs completed in idle threshold" } + }) + ); + }, this.options.groupIdleTimeoutMs); + } + + // Mark server idle + this.idleServers.add(clientId); + this.dispatchEvent( + new CustomEvent("server:idle", { + detail: { clientId, groupId } + }) + ); + + // Emit completed event + this.dispatchEvent(new CustomEvent("job:completed", { detail: { job } })); + + // Clean up context + this.executionContexts.delete(jobId); + + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + + /** + * Handle job failure + */ + private handleJobFailure(jobId: JobId, groupId: string, error: Error): void { + const job = this.jobStore.get(jobId); + if (!job) return; + + const ctx = this.executionContexts.get(jobId); + if (ctx?.timeoutHandle) { + clearTimeout(ctx.timeoutHandle); + } + + // Clean up listeners + if (ctx && job.clientId) { + const client = this.clientMap.get(job.clientId); + if (client) { + if (ctx.executedHandler) client.off("executed", ctx.executedHandler as any); + if (ctx.executionSuccessHandler) client.off("execution_success", ctx.executionSuccessHandler as any); + if (ctx.executionErrorHandler) client.off("execution_error", ctx.executionErrorHandler as any); + } + } + + job.status = "failed"; + job.lastError = error; + job.completedAt = Date.now(); + + // Update group stats + const group = this.affinityGroups.get(groupId); + if (group) { + group.jobsFailed++; + } + + // Mark server idle + if (job.clientId) { + this.idleServers.add(job.clientId); + this.dispatchEvent( + new CustomEvent("server:idle", { + detail: { clientId: job.clientId, groupId } + }) + ); + } + + // Emit failed event + this.dispatchEvent( + new CustomEvent("job:failed", { + detail: { job, error, willRetry: false } + }) + ); + + // Clean up context + this.executionContexts.delete(jobId); + + // Trigger processing + setImmediate(() => this.processAffinityGroup(groupId)); + } + + /** + * Handle job timeout + */ + private handleJobTimeout(jobId: JobId): void { + const job = this.jobStore.get(jobId); + if (!job) return; + + const ctx = this.executionContexts.get(jobId); + const groupId = ctx?.groupId || "default"; + + const error = new Error(`Job execution timeout after ${this.options.jobExecutionTimeoutMs}ms`); + this.handleJobFailure(jobId, groupId, error); + } + + // ========================================================================= + // PRIVATE: PERFORMANCE TRACKING + // ========================================================================= + + private updateServerPerformance(clientId: string, executionTimeMs: number): void { + let metrics = this.serverPerformance.get(clientId); + + if (!metrics) { + metrics = { + clientId, + totalJobsCompleted: 0, + totalExecutionTimeMs: 0, + averageExecutionTimeMs: 0 + }; + this.serverPerformance.set(clientId, metrics); + } + + metrics.totalJobsCompleted++; + metrics.totalExecutionTimeMs += executionTimeMs; + metrics.lastJobDurationMs = executionTimeMs; + metrics.averageExecutionTimeMs = metrics.totalExecutionTimeMs / metrics.totalJobsCompleted; + } + + private sortServersByPerformance(serverIds: string[]): string[] { + return [...serverIds].sort((a, b) => { + const metricsA = this.serverPerformance.get(a); + const metricsB = this.serverPerformance.get(b); + + // Untracked servers go to end + if (!metricsA) return 1; + if (!metricsB) return -1; + + return metricsA.averageExecutionTimeMs - metricsB.averageExecutionTimeMs; + }); + } +} diff --git a/src/pool/index.ts b/src/pool/index.ts index 741e8f9..93b151d 100644 --- a/src/pool/index.ts +++ b/src/pool/index.ts @@ -1,5 +1,6 @@ export { WorkflowPool } from "./WorkflowPool.js"; export { SmartPool } from "./SmartPool.js"; +export { SmartPoolV2 } from "./SmartPoolV2.js"; export type { WorkflowPoolOpts } from "./WorkflowPool.js"; export type { WorkflowPoolEventMap } from "./types/events.js"; export type { JobRecord, JobStatus, WorkflowJobOptions } from "./types/job.js";