@@ -34,6 +34,7 @@ import {
3434 isVariantAnalysisComplete ,
3535 parseVariantAnalysisQueryLanguage ,
3636 VariantAnalysisScannedRepositoryDownloadStatus ,
37+ VariantAnalysisStatus ,
3738} from "./shared/variant-analysis" ;
3839import { getErrorMessage } from "../common/helpers-pure" ;
3940import { VariantAnalysisView } from "./variant-analysis-view" ;
@@ -611,10 +612,22 @@ export class VariantAnalysisManager
611612 return ;
612613 }
613614
614- if ( ! this . variantAnalyses . has ( variantAnalysis . id ) ) {
615+ const originalVariantAnalysis = this . variantAnalyses . get (
616+ variantAnalysis . id ,
617+ ) ;
618+
619+ if ( ! originalVariantAnalysis ) {
615620 return ;
616621 }
617622
623+ // Maintain the canceling status if we are still canceling.
624+ if (
625+ originalVariantAnalysis . status === VariantAnalysisStatus . Canceling &&
626+ variantAnalysis . status === VariantAnalysisStatus . InProgress
627+ ) {
628+ variantAnalysis . status = VariantAnalysisStatus . Canceling ;
629+ }
630+
618631 await this . setVariantAnalysis ( variantAnalysis ) ;
619632 this . _onVariantAnalysisStatusUpdated . fire ( variantAnalysis ) ;
620633 }
@@ -838,6 +851,11 @@ export class VariantAnalysisManager
838851 throw new Error ( `No variant analysis with id: ${ variantAnalysisId } ` ) ;
839852 }
840853
854+ await this . onVariantAnalysisUpdated ( {
855+ ...variantAnalysis ,
856+ status : VariantAnalysisStatus . Canceling ,
857+ } ) ;
858+
841859 if ( ! variantAnalysis . actionsWorkflowRunId ) {
842860 throw new Error (
843861 `No workflow run id for variant analysis with id: ${ variantAnalysis . id } ` ,
@@ -848,7 +866,17 @@ export class VariantAnalysisManager
848866 this . app . logger ,
849867 "Cancelling variant analysis. This may take a while." ,
850868 ) ;
851- await cancelVariantAnalysis ( this . app . credentials , variantAnalysis ) ;
869+ try {
870+ await cancelVariantAnalysis ( this . app . credentials , variantAnalysis ) ;
871+ } catch ( e ) {
872+ if ( variantAnalysis . status === VariantAnalysisStatus . Canceling ) {
873+ await this . onVariantAnalysisUpdated ( {
874+ ...variantAnalysis ,
875+ status : VariantAnalysisStatus . InProgress ,
876+ } ) ;
877+ }
878+ throw e ;
879+ }
852880 }
853881
854882 public async openVariantAnalysisLogs ( variantAnalysisId : number ) {
0 commit comments