@@ -325,7 +325,7 @@ export class SbomCollector {
325325 console . error ( chalk . red ( `Force submission failed for ${ fullName } branch ${ b . name } : ${ ( subErr as Error ) . message } ` ) ) ;
326326 }
327327 }
328- const diff = await this . fetchDependencyReviewDiff ( org , repo . name , base , b . name ) ;
328+ const diff = await this . fetchDependencyReviewDiff ( org , repo . name , base , b . name , 1 ) ;
329329 branchDiffs . set ( b . name , diff ) ;
330330 }
331331 if ( branchDiffs . size ) sbom . branchDiffs = branchDiffs ;
@@ -495,7 +495,10 @@ export class SbomCollector {
495495 return branches ;
496496 }
497497
498- private async fetchDependencyReviewDiff ( org : string , repo : string , base : string , head : string ) : Promise < BranchDependencyDiff > {
498+ private async fetchDependencyReviewDiff ( org : string , repo : string , base : string , head : string , retries : number ) : Promise < BranchDependencyDiff > {
499+ if ( retries <= 0 ) {
500+ return { latestCommitDate : undefined , base, head, retrievedAt : new Date ( ) . toISOString ( ) , changes : [ ] , error : "Maximum retries exceeded" } ;
501+ }
499502 if ( ! this . octokit ) throw new Error ( "No Octokit instance" ) ;
500503 try {
501504 const basehead = `${ base } ...${ head } ` ;
@@ -532,7 +535,7 @@ export class SbomCollector {
532535 if ( ok ) {
533536 console . log ( chalk . blue ( `Snapshot submission attempted; waiting 3 seconds before retrying dependency review diff for ${ org } /${ repo } ${ base } ...${ head } ...` ) ) ;
534537 await new Promise ( r => setTimeout ( r , 3000 ) ) ;
535- return await this . fetchDependencyReviewDiff ( org , repo , base , head ) ;
538+ return await this . fetchDependencyReviewDiff ( org , repo , base , head , retries -- ) ;
536539 }
537540 } catch ( subErr ) {
538541 console . error ( chalk . red ( `Snapshot submission failed for ${ org } /${ repo } branch ${ head } : ${ ( subErr as Error ) . message } ` ) ) ;
0 commit comments