From 67ef6a6068981e9d6afb578933151a0309ef7ed0 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Sun, 22 Mar 2026 11:58:54 -0700 Subject: [PATCH] fix(exports): preserve processing state on async export failures --- .../platform-service/src/modules/exports/routes.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/services/platform-service/src/modules/exports/routes.ts b/services/platform-service/src/modules/exports/routes.ts index 1ccb02e4..bd6cacd1 100644 --- a/services/platform-service/src/modules/exports/routes.ts +++ b/services/platform-service/src/modules/exports/routes.ts @@ -63,17 +63,18 @@ export async function exportRoutes(app: FastifyInstance) { // Process async — respond immediately, update job status when done const log = req.log; process.nextTick(async () => { + let currentJob = created; try { - const processingJob = await repo.updateExportJob({ - ...created, + currentJob = await repo.updateExportJob({ + ...currentJob, status: 'processing', startedAt: new Date().toISOString(), }); const rows = await fetchExportData(created.type, access.productId, created.filters); const serialized = created.format === 'json' ? JSON.stringify(rows, null, 2) : toCsv(rows); const fileName = `${created.type}-${access.productId}-${Date.now()}.${created.format}`; - await repo.updateExportJob({ - ...processingJob, + currentJob = await repo.updateExportJob({ + ...currentJob, status: 'ready', data: serialized, rowCount: rows.length, @@ -86,7 +87,7 @@ export async function exportRoutes(app: FastifyInstance) { log.error({ err, exportId: created.id }, '[exports] Export job failed'); await repo .updateExportJob({ - ...created, + ...currentJob, status: 'failed', error: err instanceof Error ? err.message : 'Unknown error', completedAt: new Date().toISOString(),