@@ -2,6 +2,7 @@ import { startSpan } from "@internal/tracing";
2
2
import {
3
3
CompleteRunAttemptResult ,
4
4
ExecutionResult ,
5
+ FlushedRunMetadata ,
5
6
GitMeta ,
6
7
StartRunAttemptResult ,
7
8
TaskRunError ,
@@ -35,6 +36,7 @@ import {
35
36
import { ReleaseConcurrencySystem } from "./releaseConcurrencySystem.js" ;
36
37
import { SystemResources } from "./systems.js" ;
37
38
import { WaitpointSystem } from "./waitpointSystem.js" ;
39
+ import { tryCatch } from "@trigger.dev/core/utils" ;
38
40
39
41
export type RunAttemptSystemOptions = {
40
42
resources : SystemResources ;
@@ -386,15 +388,7 @@ export class RunAttemptSystem {
386
388
workerId ?: string ;
387
389
runnerId ?: string ;
388
390
} ) : 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 ) ;
398
392
399
393
switch ( completion . ok ) {
400
394
case true : {
@@ -1314,4 +1308,56 @@ export class RunAttemptSystem {
1314
1308
1315
1309
return taskRun ?. runtimeEnvironment ;
1316
1310
}
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
+ }
1317
1363
}
0 commit comments