未验证 提交 69e8f8ea 编写于 作者: A Alex Dima

Fixes #128528: Skip acquiring workspace storage locks on the local nodejs extension host

上级 9520f0a5
......@@ -77,6 +77,7 @@ export interface IEnvironment {
globalStorageHome: URI;
workspaceStorageHome: URI;
useHostProxy?: boolean;
skipWorkspaceStorageLock?: boolean;
}
export interface IStaticWorkspaceData {
......
......@@ -22,6 +22,11 @@ export class ExtensionStoragePaths extends CommonExtensionStoragePaths {
return workspaceStorageURI;
}
if (this._environment.skipWorkspaceStorageLock) {
this._logService.info(`Skipping acquiring lock for ${workspaceStorageURI.fsPath}.`);
return workspaceStorageURI;
}
const workspaceStorageBase = workspaceStorageURI.fsPath;
let attempt = 0;
do {
......
......@@ -238,7 +238,7 @@ export class LocalProcessExtensionHost implements IExtensionHost {
}
// Run Extension Host as fork of current process
this._extensionHostProcess = fork(FileAccess.asFileUri('bootstrap-fork', require).fsPath, ['--type=extensionHost'], opts);
this._extensionHostProcess = fork(FileAccess.asFileUri('bootstrap-fork', require).fsPath, ['--type=extensionHost', '--skipWorkspaceStorageLock'], opts);
// Catch all output coming from the extension host process
type Output = { data: string, format: string[] };
......
......@@ -22,12 +22,14 @@ import { Promises } from 'vs/base/node/pfs';
import { realpath } from 'vs/base/node/extpath';
import { IHostUtils } from 'vs/workbench/api/common/extHostExtensionService';
import { RunOnceScheduler } from 'vs/base/common/async';
import { boolean } from 'vs/editor/common/config/editorOptions';
import 'vs/workbench/api/common/extHost.common.services';
import 'vs/workbench/api/node/extHost.node.services';
interface ParsedExtHostArgs {
uriTransformerPath?: string;
skipWorkspaceStorageLock?: boolean;
useHostProxy?: string;
}
......@@ -46,6 +48,9 @@ const args = minimist(process.argv.slice(2), {
string: [
'uriTransformerPath',
'useHostProxy'
],
boolean: [
'skipWorkspaceStorageLock'
]
}) as ParsedExtHostArgs;
......@@ -323,6 +328,7 @@ export async function startExtensionHostProcess(): Promise<void> {
// setup things
patchProcess(!!initData.environment.extensionTestsLocationURI); // to support other test frameworks like Jasmin that use process.exit (https://github.com/microsoft/vscode/issues/37708)
initData.environment.useHostProxy = args.useHostProxy !== undefined ? args.useHostProxy !== 'false' : undefined;
initData.environment.skipWorkspaceStorageLock = boolean(args.skipWorkspaceStorageLock, false);
// host abstraction
const hostUtils = new class NodeHost implements IHostUtils {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册