@@ -2,6 +2,7 @@ import { startSpan } from "@internal/tracing";
22import {
33 CompleteRunAttemptResult ,
44 ExecutionResult ,
5+ FlushedRunMetadata ,
56 GitMeta ,
67 StartRunAttemptResult ,
78 TaskRunError ,
@@ -35,6 +36,7 @@ import {
3536import { ReleaseConcurrencySystem } from "./releaseConcurrencySystem.js" ;
3637import { SystemResources } from "./systems.js" ;
3738import { WaitpointSystem } from "./waitpointSystem.js" ;
39+ import { tryCatch } from "@trigger.dev/core/utils" ;
3840
3941export type RunAttemptSystemOptions = {
4042 resources : SystemResources ;
@@ -386,15 +388,7 @@ export class RunAttemptSystem {
386388 workerId ?: string ;
387389 runnerId ?: string ;
388390 } ) : Promise < CompleteRunAttemptResult > {
389- if ( completion . metadata ) {
390- this . $ . eventBus . emit ( "runMetadataUpdated" , {
391- time : new Date ( ) ,
392- run : {
393- id : runId ,
394- metadata : completion . metadata ,
395- } ,
396- } ) ;
397- }
391+ await this . #notifyMetadataUpdated( runId , completion ) ;
398392
399393 switch ( completion . ok ) {
400394 case true : {
@@ -1314,4 +1308,56 @@ export class RunAttemptSystem {
13141308
13151309 return taskRun ?. runtimeEnvironment ;
13161310 }
1311+
1312+ async #notifyMetadataUpdated( runId : string , completion : TaskRunExecutionResult ) {
1313+ if ( completion . metadata ) {
1314+ this . $ . eventBus . emit ( "runMetadataUpdated" , {
1315+ time : new Date ( ) ,
1316+ run : {
1317+ id : runId ,
1318+ metadata : completion . metadata ,
1319+ } ,
1320+ } ) ;
1321+
1322+ return ;
1323+ }
1324+
1325+ if ( completion . flushedMetadata ) {
1326+ const [ packetError , packet ] = await tryCatch ( parsePacket ( completion . flushedMetadata ) ) ;
1327+
1328+ if ( ! packet ) {
1329+ return ;
1330+ }
1331+
1332+ if ( packetError ) {
1333+ this . $ . logger . error ( "RunEngine.completeRunAttempt(): failed to parse flushed metadata" , {
1334+ runId,
1335+ flushedMetadata : completion . flushedMetadata ,
1336+ error : packetError ,
1337+ } ) ;
1338+
1339+ return ;
1340+ }
1341+
1342+ const metadata = FlushedRunMetadata . safeParse ( packet ) ;
1343+
1344+ if ( ! metadata . success ) {
1345+ this . $ . logger . error ( "RunEngine.completeRunAttempt(): failed to parse flushed metadata" , {
1346+ runId,
1347+ flushedMetadata : completion . flushedMetadata ,
1348+ error : metadata . error ,
1349+ } ) ;
1350+
1351+ return ;
1352+ }
1353+
1354+ this . $ . eventBus . emit ( "runMetadataUpdated" , {
1355+ time : new Date ( ) ,
1356+ run : {
1357+ id : runId ,
1358+ metadata : metadata . data ,
1359+ } ,
1360+ } ) ;
1361+ }
1362+ }
13171363}
0 commit comments