diff --git a/deploy/mainnet/docker-compose.chatmock.yml b/deploy/mainnet/docker-compose.chatmock.yml index bf80ef3..11678c2 100644 --- a/deploy/mainnet/docker-compose.chatmock.yml +++ b/deploy/mainnet/docker-compose.chatmock.yml @@ -45,7 +45,12 @@ services: chatmock: image: storagetime/chatmock:v1.36 container_name: marketplace-mainnet-chatmock - command: ["serve"] + # --reasoning-effort low + --reasoning-summary none cap GPT-5 thinking + # tokens so a normal request returns well inside the supplier's + # OPENAI_TIMEOUT_MS budget. Default `medium`/`auto` produced 3-min + # timeouts in early mainnet testing (jobs bcc973bd / c85eaeec / + # 7e87afe6 on 2026-05-19). + command: ["serve", "--reasoning-effort", "low", "--reasoning-summary", "none"] restart: unless-stopped environment: CHATGPT_LOCAL_HOME: /data diff --git a/deploy/mainnet/docker-compose.supplier-gpt.yml b/deploy/mainnet/docker-compose.supplier-gpt.yml index 9ac888a..f3fb446 100644 --- a/deploy/mainnet/docker-compose.supplier-gpt.yml +++ b/deploy/mainnet/docker-compose.supplier-gpt.yml @@ -36,7 +36,7 @@ services: environment: LLM_BACKEND: openai OPENAI_BASE_URL: http://marketplace-mainnet-chatmock:8000 - OPENAI_TIMEOUT_MS: "180000" + OPENAI_TIMEOUT_MS: "300000" PORT: "8080" # Enable LiveOgmiosProvider so submitTx/awaitTx actually broadcast. # Mirrors the testnet supplier compose; without this the supplier diff --git a/supplier/src/jobRunner.ts b/supplier/src/jobRunner.ts index c3b5faf..530ad77 100644 --- a/supplier/src/jobRunner.ts +++ b/supplier/src/jobRunner.ts @@ -112,6 +112,9 @@ export async function runChatJob(params: RunChatJobParams): Promise { rawReason === "ollama_timeout" ? "ollama_failure" : rawReason === "openai_timeout" ? "openai_failure" : rawReason; + console.warn( + `[job_failed] jobId=${jobId} reason=${rawReason} httpStatus=502 msg=${message}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: collapsedReason, @@ -148,6 +151,9 @@ export async function runChatJob(params: RunChatJobParams): Promise { }); } catch (err) { const message = err instanceof Error ? err.message : String(err); + console.warn( + `[job_failed] jobId=${jobId} reason=submit_failed httpStatus=502 msg=${message}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: "submit_failed", @@ -161,6 +167,9 @@ export async function runChatJob(params: RunChatJobParams): Promise { await deps.chain.awaitTx(buildResult.expectedTxHash, 60_000); } catch (err) { const msg = err instanceof Error ? err.message : String(err); + console.warn( + `[job_failed] jobId=${jobId} reason=submit_timeout httpStatus=502 msg=${msg}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: "submit_timeout", @@ -250,6 +259,9 @@ export async function runTtsJob(params: RunTtsJobParams): Promise { } catch (err) { const reason = (err as piper.PiperError)?.reason ?? "piper_failure"; const message = err instanceof Error ? err.message : String(err); + console.warn( + `[job_failed] jobId=${jobId} reason=${reason} httpStatus=502 msg=${message}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: reason === "piper_timeout" ? "piper_failure" : reason, @@ -288,6 +300,9 @@ export async function runTtsJob(params: RunTtsJobParams): Promise { }); } catch (err) { const message = err instanceof Error ? err.message : String(err); + console.warn( + `[job_failed] jobId=${jobId} reason=submit_failed httpStatus=502 msg=${message}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: "submit_failed", @@ -301,6 +316,9 @@ export async function runTtsJob(params: RunTtsJobParams): Promise { await deps.chain.awaitTx(buildResult.expectedTxHash, 60_000); } catch (err) { const msg = err instanceof Error ? err.message : String(err); + console.warn( + `[job_failed] jobId=${jobId} reason=submit_timeout httpStatus=502 msg=${msg}`, + ); deps.jobs.fail(jobId, { httpStatus: 502, reason: "submit_timeout",