Skip to content

Commit

Permalink
Merge pull request #208155 from microsoft/uninterested-shrew
Browse files Browse the repository at this point in the history
fix cancellations on ai search
  • Loading branch information
andreamah authored Mar 20, 2024
2 parents 7fca5d7 + fa464e8 commit 6a52a46
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
19 changes: 16 additions & 3 deletions src/vs/workbench/contrib/search/browser/searchModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2013,6 +2013,7 @@ export class SearchModel extends Disposable {
private currentCancelTokenSource: CancellationTokenSource | null = null;
private currentAICancelTokenSource: CancellationTokenSource | null = null;
private searchCancelledForNewSearch: boolean = false;
private aiSearchCancelledForNewSearch: boolean = false;
public location: SearchModelLocation = SearchModelLocation.PANEL;

constructor(
Expand Down Expand Up @@ -2297,11 +2298,15 @@ export class SearchModel extends Disposable {
private onSearchError(e: any, duration: number, ai: boolean): void {
if (errors.isCancellationError(e)) {
this.onSearchCompleted(
this.searchCancelledForNewSearch
(ai ? this.aiSearchCancelledForNewSearch : this.searchCancelledForNewSearch)
? { exit: SearchCompletionExitCode.NewSearchStarted, results: [], messages: [] }
: undefined,
duration, '', ai);
this.searchCancelledForNewSearch = false;
if (ai) {
this.aiSearchCancelledForNewSearch = false;
} else {
this.searchCancelledForNewSearch = false;
}
}
}

Expand Down Expand Up @@ -2338,9 +2343,17 @@ export class SearchModel extends Disposable {
}
return false;
}

cancelAISearch(cancelledForNewSearch = false): boolean {
if (this.currentAICancelTokenSource) {
this.aiSearchCancelledForNewSearch = cancelledForNewSearch;
this.currentAICancelTokenSource.cancel();
return true;
}
return false;
}
override dispose(): void {
this.cancelSearch();
this.cancelAISearch();
this.searchResult.dispose();
super.dispose();
}
Expand Down
3 changes: 3 additions & 0 deletions src/vs/workbench/contrib/search/browser/searchView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,8 @@ export class SearchView extends ViewPane {
return;
}

// in each case, we want to cancel our current AI search because it is no longer valid
this.model.cancelAISearch();
if (visible) {
await this.model.addAIResults();
} else {
Expand Down Expand Up @@ -1634,6 +1636,7 @@ export class SearchView extends ViewPane {
});

this.viewModel.cancelSearch(true);
this.viewModel.cancelAISearch(true);

this.currentSearchQ = this.currentSearchQ
.then(() => this.doSearch(query, excludePatternText, includePatternText, triggeredOnType))
Expand Down

0 comments on commit 6a52a46

Please sign in to comment.