@@ -33,6 +33,7 @@ import { CancelAttemptService } from "./cancelAttempt.server";
3333import { CreateCheckpointService } from "./createCheckpoint.server" ;
3434import { FinalizeTaskRunService } from "./finalizeTaskRun.server" ;
3535import { RetryAttemptService } from "./retryAttempt.server" ;
36+ import { tryCatch } from "@trigger.dev/core/utils" ;
3637
3738type FoundAttempt = Awaited < ReturnType < typeof findAttempt > > ;
3839
@@ -164,27 +165,20 @@ export class CompleteAttemptService extends BaseService {
164165 env,
165166 } ) ;
166167
167- // Now we need to "complete" the task run event/span
168- await eventRepository . completeEvent (
169- getTaskEventStoreTableForRun ( taskRunAttempt . taskRun ) ,
170- taskRunAttempt . taskRun . spanId ,
171- taskRunAttempt . taskRun . createdAt ,
172- taskRunAttempt . taskRun . completedAt ?? undefined ,
173- {
168+ const [ completeSuccessfulRunEventError ] = await tryCatch (
169+ eventRepository . completeSuccessfulRunEvent ( {
170+ run : taskRunAttempt . taskRun ,
174171 endTime : new Date ( ) ,
175- attributes : {
176- isError : false ,
177- output :
178- completion . outputType === "application/store" || completion . outputType === "text/plain"
179- ? completion . output
180- : completion . output
181- ? ( safeJsonParse ( completion . output ) as Attributes )
182- : undefined ,
183- outputType : completion . outputType ,
184- } ,
185- }
172+ } )
186173 ) ;
187174
175+ if ( completeSuccessfulRunEventError ) {
176+ logger . error ( "[CompleteAttemptService] Failed to complete successful run event" , {
177+ error : completeSuccessfulRunEventError ,
178+ runId : taskRunAttempt . taskRunId ,
179+ } ) ;
180+ }
181+
188182 return "COMPLETED" ;
189183 }
190184
@@ -322,29 +316,21 @@ export class CompleteAttemptService extends BaseService {
322316 exitRun ( taskRunAttempt . taskRunId ) ;
323317 }
324318
325- // Now we need to "complete" the task run event/span
326- await eventRepository . completeEvent (
327- getTaskEventStoreTableForRun ( taskRunAttempt . taskRun ) ,
328- taskRunAttempt . taskRun . spanId ,
329- taskRunAttempt . taskRun . createdAt ,
330- taskRunAttempt . taskRun . completedAt ?? undefined ,
331- {
319+ const [ completeFailedRunEventError ] = await tryCatch (
320+ eventRepository . completeFailedRunEvent ( {
321+ run : taskRunAttempt . taskRun ,
332322 endTime : failedAt ,
333- attributes : {
334- isError : true ,
335- } ,
336- events : [
337- {
338- name : "exception" ,
339- time : failedAt ,
340- properties : {
341- exception : createExceptionPropertiesFromError ( sanitizedError ) ,
342- } ,
343- } ,
344- ] ,
345- }
323+ exception : createExceptionPropertiesFromError ( sanitizedError ) ,
324+ } )
346325 ) ;
347326
327+ if ( completeFailedRunEventError ) {
328+ logger . error ( "[CompleteAttemptService] Failed to complete failed run event" , {
329+ error : completeFailedRunEventError ,
330+ runId : taskRunAttempt . taskRunId ,
331+ } ) ;
332+ }
333+
348334 await this . _prisma . taskRun . update ( {
349335 where : {
350336 id : taskRunAttempt . taskRunId ,
@@ -385,64 +371,43 @@ export class CompleteAttemptService extends BaseService {
385371 return "COMPLETED" ;
386372 }
387373
388- const inProgressEvents = await eventRepository . queryIncompleteEvents (
389- getTaskEventStoreTableForRun ( taskRunAttempt . taskRun ) ,
390- {
391- runId : taskRunAttempt . taskRun . friendlyId ,
392- } ,
393- taskRunAttempt . taskRun . createdAt ,
394- taskRunAttempt . taskRun . completedAt ?? undefined
395- ) ;
396-
397374 // Handle in-progress events
398375 switch ( status ) {
399376 case "CRASHED" : {
400- logger . debug ( "[CompleteAttemptService] Crashing in-progress events" , {
401- inProgressEvents : inProgressEvents . map ( ( event ) => event . id ) ,
402- } ) ;
403-
404- await Promise . all (
405- inProgressEvents . map ( ( event ) => {
406- return eventRepository . crashEvent ( {
407- event,
408- crashedAt : failedAt ,
409- exception : createExceptionPropertiesFromError ( sanitizedError ) ,
410- } ) ;
377+ const [ createAttemptFailedEventError ] = await tryCatch (
378+ eventRepository . createAttemptFailedRunEvent ( {
379+ run : taskRunAttempt . taskRun ,
380+ endTime : failedAt ,
381+ attemptNumber : taskRunAttempt . number ,
382+ exception : createExceptionPropertiesFromError ( sanitizedError ) ,
411383 } )
412384 ) ;
413385
386+ if ( createAttemptFailedEventError ) {
387+ logger . error ( "[CompleteAttemptService] Failed to create attempt failed run event" , {
388+ error : createAttemptFailedEventError ,
389+ runId : taskRunAttempt . taskRunId ,
390+ } ) ;
391+ }
392+
414393 break ;
415394 }
416395 case "SYSTEM_FAILURE" : {
417- logger . debug ( "[CompleteAttemptService] Failing in-progress events" , {
418- inProgressEvents : inProgressEvents . map ( ( event ) => event . id ) ,
419- } ) ;
420-
421- await Promise . all (
422- inProgressEvents . map ( ( event ) => {
423- return eventRepository . completeEvent (
424- getTaskEventStoreTableForRun ( taskRunAttempt . taskRun ) ,
425- event . spanId ,
426- taskRunAttempt . taskRun . createdAt ,
427- taskRunAttempt . taskRun . completedAt ?? undefined ,
428- {
429- endTime : failedAt ,
430- attributes : {
431- isError : true ,
432- } ,
433- events : [
434- {
435- name : "exception" ,
436- time : failedAt ,
437- properties : {
438- exception : createExceptionPropertiesFromError ( sanitizedError ) ,
439- } ,
440- } ,
441- ] ,
442- }
443- ) ;
396+ const [ createAttemptFailedEventError ] = await tryCatch (
397+ eventRepository . createAttemptFailedRunEvent ( {
398+ run : taskRunAttempt . taskRun ,
399+ endTime : failedAt ,
400+ attemptNumber : taskRunAttempt . number ,
401+ exception : createExceptionPropertiesFromError ( sanitizedError ) ,
444402 } )
445403 ) ;
404+
405+ if ( createAttemptFailedEventError ) {
406+ logger . error ( "[CompleteAttemptService] Failed to create attempt failed run event" , {
407+ error : createAttemptFailedEventError ,
408+ runId : taskRunAttempt . taskRunId ,
409+ } ) ;
410+ }
446411 }
447412 }
448413
0 commit comments