fix: propagate execArgv (#5510)
* Use fork instead of spawn We no longer do in-place updating so no need for the spawn. The advantage of a fork is that it preserves flags like --prof which you can use to profile code-server. Also I am not sure the comment about not being able to reload in place with fork was even true to begin with. * Refresh heartbeat patch Seems to have gotten out of date a little. * Propagate execArgv to extension host This will let us profile the extension host.
This commit is contained in:
parent
101d4ee4ad
commit
6262c7a0bf
17
patches/exec-argv.diff
Normal file
17
patches/exec-argv.diff
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Preserve process.execArgv
|
||||||
|
|
||||||
|
This ensures flags like --prof are passed down so we can profile everything.
|
||||||
|
|
||||||
|
Index: code-server/lib/vscode/src/vs/server/node/extensionHostConnection.ts
|
||||||
|
===================================================================
|
||||||
|
--- code-server.orig/lib/vscode/src/vs/server/node/extensionHostConnection.ts
|
||||||
|
+++ code-server/lib/vscode/src/vs/server/node/extensionHostConnection.ts
|
||||||
|
@@ -228,7 +228,7 @@ export class ExtensionHostConnection {
|
||||||
|
|
||||||
|
public async start(startParams: IRemoteExtensionHostStartParams): Promise<void> {
|
||||||
|
try {
|
||||||
|
- let execArgv: string[] = [];
|
||||||
|
+ let execArgv: string[] = process.execArgv ? process.execArgv.filter(a => !/^--inspect(-brk)?=/.test(a)) : [];
|
||||||
|
if (startParams.port && !(<any>process).pkg) {
|
||||||
|
execArgv = [`--inspect${startParams.break ? '-brk' : ''}=${startParams.port}`];
|
||||||
|
}
|
@ -15,7 +15,7 @@ Index: code-server/lib/vscode/src/vs/base/parts/ipc/common/ipc.net.ts
|
|||||||
|
|
||||||
export const enum SocketDiagnosticsEventType {
|
export const enum SocketDiagnosticsEventType {
|
||||||
Created = 'created',
|
Created = 'created',
|
||||||
@@ -828,6 +829,19 @@ export class PersistentProtocol implemen
|
@@ -829,6 +830,19 @@ export class PersistentProtocol implemen
|
||||||
this._socketDisposables.push(this._socketWriter);
|
this._socketDisposables.push(this._socketWriter);
|
||||||
this._socketReader = new ProtocolReader(this._socket);
|
this._socketReader = new ProtocolReader(this._socket);
|
||||||
this._socketDisposables.push(this._socketReader);
|
this._socketDisposables.push(this._socketReader);
|
||||||
|
@ -21,3 +21,4 @@ telemetry.diff
|
|||||||
display-language.diff
|
display-language.diff
|
||||||
cli-window-open.diff
|
cli-window-open.diff
|
||||||
heartbeat.diff
|
heartbeat.diff
|
||||||
|
exec-argv.diff
|
||||||
|
@ -317,8 +317,7 @@ export class ParentProcess extends Process {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private spawn(): cp.ChildProcess {
|
private spawn(): cp.ChildProcess {
|
||||||
// Use spawn (instead of fork) to use the new binary in case it was updated.
|
return cp.fork(path.join(__dirname, "entry"), {
|
||||||
return cp.spawn(process.argv[0], process.argv.slice(1), {
|
|
||||||
env: {
|
env: {
|
||||||
...process.env,
|
...process.env,
|
||||||
CODE_SERVER_PARENT_PID: process.pid.toString(),
|
CODE_SERVER_PARENT_PID: process.pid.toString(),
|
||||||
|
Reference in New Issue
Block a user