From 11af214db163d4cbf1d7879696422a5ac7151777 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 7 Jan 2025 16:21:51 -0300 Subject: [PATCH] Nick: update extract in case there is an error --- apps/api/src/controllers/v1/extract-status.ts | 1 + apps/api/src/lib/extract/extract-redis.ts | 1 + apps/api/src/services/queue-worker.ts | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/apps/api/src/controllers/v1/extract-status.ts b/apps/api/src/controllers/v1/extract-status.ts index a42f17fa..ce58a342 100644 --- a/apps/api/src/controllers/v1/extract-status.ts +++ b/apps/api/src/controllers/v1/extract-status.ts @@ -34,6 +34,7 @@ export async function extractStatusController( success: true, data: data, status: extract.status, + error: extract?.error ?? undefined, expiresAt: (await getExtractExpiry(req.params.jobId)).toISOString(), }); } diff --git a/apps/api/src/lib/extract/extract-redis.ts b/apps/api/src/lib/extract/extract-redis.ts index 2d9410f9..f4ed0369 100644 --- a/apps/api/src/lib/extract/extract-redis.ts +++ b/apps/api/src/lib/extract/extract-redis.ts @@ -7,6 +7,7 @@ export type StoredExtract = { plan?: string; createdAt: number; status: "processing" | "completed" | "failed" | "cancelled"; + error?: any; }; export async function saveExtract(id: string, extract: StoredExtract) { diff --git a/apps/api/src/services/queue-worker.ts b/apps/api/src/services/queue-worker.ts index 96fad2d2..180bef10 100644 --- a/apps/api/src/services/queue-worker.ts +++ b/apps/api/src/services/queue-worker.ts @@ -55,6 +55,7 @@ import { Document } from "../controllers/v1/types"; import { performExtraction } from "../lib/extract/extraction-service"; import { supabase_service } from "../services/supabase"; import { normalizeUrl, normalizeUrlOnlyHostname } from "../lib/canonical-url"; +import { saveExtract, updateExtract } from "../lib/extract/extract-redis"; configDotenv(); @@ -351,6 +352,11 @@ const processExtractJobInternal = async (token: string, job: Job & { id: string // Move job to failed state in Redis await job.moveToFailed(error, token, false); + + await updateExtract(job.data.extractId, { + status: "failed", + error: error.error ?? error ?? "Unknown error, please contact help@firecrawl.dev. Extract id: " + job.data.extractId, + }); // throw error; } finally {