Skip to content

Commit

Permalink
For #34711 - run search for 5s, if it times out, activate the extensi…
Browse files Browse the repository at this point in the history
…on anyway
  • Loading branch information
roblourens committed Aug 22, 2018
1 parent 3933e6b commit 6a75898
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/vs/workbench/node/extensionHostMain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionS
import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration';
import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import { QueryType, ISearchQuery } from 'vs/platform/search/common/search';
import { QueryType, ISearchQuery, ISearchComplete } from 'vs/platform/search/common/search';
import { DiskSearch } from 'vs/workbench/services/search/node/searchService';
import { IInitData, IEnvironment, IWorkspaceData, MainContext } from 'vs/workbench/api/node/extHost.protocol';
import * as errors from 'vs/base/common/errors';
Expand Down Expand Up @@ -76,6 +76,8 @@ interface ITestRunner {

export class ExtensionHostMain {

private static readonly WORKSPACE_CONTAINS_TIMEOUT = 5000;

private _isTerminating: boolean = false;
private _diskSearch: DiskSearch;
private _workspace: IWorkspaceData;
Expand Down Expand Up @@ -259,7 +261,7 @@ export class ExtensionHostMain {
}

if (!this._diskSearch) {
// Shut down this search process after 1s
// Shut down this search process after 1s of inactivity
this._diskSearch = new DiskSearch(false, 1000);
}

Expand All @@ -282,7 +284,22 @@ export class ExtensionHostMain {
ignoreSymlinks: !followSymlinks
};

const result = await this._diskSearch.search(query);
const searchP = this._diskSearch.search(query);
const timer = setTimeout(() => {
searchP.cancel();
}, ExtensionHostMain.WORKSPACE_CONTAINS_TIMEOUT);

let result: ISearchComplete;
try {
result = await searchP;
clearTimeout(timer);
} catch (e) {
return (
this._extensionService.activateById(extensionId, new ExtensionActivatedByEvent(true, `workspaceContainsTimeout`))
.done(null, err => console.error(err))
);
}

if (result.limitHit) {
// a file was found matching one of the glob patterns
return (
Expand Down

0 comments on commit 6a75898

Please sign in to comment.