@@ -502,11 +502,7 @@ export function buildTraceSpans(result: ExecutionResult): {
502502 }
503503 addRelativeTimestamps ( groupedRootSpans , earliestStart )
504504
505- const containerTypes = new Set ( [ 'loop' , 'loop-iteration' , 'parallel' , 'parallel-iteration' ] )
506505 const checkForUnhandledErrors = ( s : TraceSpan ) : boolean => {
507- if ( containerTypes . has ( s . type ?. toLowerCase ( ) || '' ) ) {
508- return s . children ? s . children . some ( checkForUnhandledErrors ) : false
509- }
510506 if ( s . status === 'error' && ! s . errorHandled ) return true
511507 return s . children ? s . children . some ( checkForUnhandledErrors ) : false
512508 }
@@ -711,6 +707,8 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
711707 const iterDuration = iterLatestEnd - iterEarliestStart
712708
713709 const hasErrors = spans . some ( ( span ) => span . status === 'error' )
710+ const allErrorsHandled =
711+ hasErrors && spans . every ( ( span ) => span . status !== 'error' || span . errorHandled )
714712
715713 const iterationSpan : TraceSpan = {
716714 id : `${ containerId } -iteration-${ iterationIndex } ` ,
@@ -720,6 +718,7 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
720718 startTime : new Date ( iterEarliestStart ) . toISOString ( ) ,
721719 endTime : new Date ( iterLatestEnd ) . toISOString ( ) ,
722720 status : hasErrors ? 'error' : 'success' ,
721+ ...( allErrorsHandled && { errorHandled : true } ) ,
723722 children : spans . map ( ( span ) => ( {
724723 ...span ,
725724 name : span . name . replace ( / \( i t e r a t i o n \d + \) $ / , '' ) ,
@@ -730,6 +729,9 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
730729 } )
731730
732731 const hasErrors = allIterationSpans . some ( ( span ) => span . status === 'error' )
732+ const allErrorsHandled =
733+ hasErrors &&
734+ iterationChildren . every ( ( span ) => span . status !== 'error' || span . errorHandled )
733735 const parallelContainer : TraceSpan = {
734736 id : `parallel-execution-${ containerId } ` ,
735737 name : containerName ,
@@ -738,6 +740,7 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
738740 startTime : new Date ( earliestStart ) . toISOString ( ) ,
739741 endTime : new Date ( latestEnd ) . toISOString ( ) ,
740742 status : hasErrors ? 'error' : 'success' ,
743+ ...( allErrorsHandled && { errorHandled : true } ) ,
741744 children : iterationChildren ,
742745 }
743746
@@ -763,6 +766,8 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
763766 const iterDuration = iterLatestEnd - iterEarliestStart
764767
765768 const hasErrors = spans . some ( ( span ) => span . status === 'error' )
769+ const allErrorsHandled =
770+ hasErrors && spans . every ( ( span ) => span . status !== 'error' || span . errorHandled )
766771
767772 const iterationSpan : TraceSpan = {
768773 id : `${ containerId } -iteration-${ iterationIndex } ` ,
@@ -772,6 +777,7 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
772777 startTime : new Date ( iterEarliestStart ) . toISOString ( ) ,
773778 endTime : new Date ( iterLatestEnd ) . toISOString ( ) ,
774779 status : hasErrors ? 'error' : 'success' ,
780+ ...( allErrorsHandled && { errorHandled : true } ) ,
775781 children : spans . map ( ( span ) => ( {
776782 ...span ,
777783 name : span . name . replace ( / \( i t e r a t i o n \d + \) $ / , '' ) ,
@@ -782,6 +788,9 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
782788 } )
783789
784790 const hasErrors = allIterationSpans . some ( ( span ) => span . status === 'error' )
791+ const allErrorsHandled =
792+ hasErrors &&
793+ iterationChildren . every ( ( span ) => span . status !== 'error' || span . errorHandled )
785794 const loopContainer : TraceSpan = {
786795 id : `loop-execution-${ containerId } ` ,
787796 name : containerName ,
@@ -790,6 +799,7 @@ function groupIterationBlocks(spans: TraceSpan[]): TraceSpan[] {
790799 startTime : new Date ( earliestStart ) . toISOString ( ) ,
791800 endTime : new Date ( latestEnd ) . toISOString ( ) ,
792801 status : hasErrors ? 'error' : 'success' ,
802+ ...( allErrorsHandled && { errorHandled : true } ) ,
793803 children : iterationChildren ,
794804 }
795805
0 commit comments