debug: auto recover from shifted tmpdirs in auto lauch (#184764)

I think this should fix https://github.com/microsoft/vscode-js-debug/issues/1660
This commit is contained in:
Connor Peet 2023-06-09 15:14:11 -07:00 committed by GitHub
parent 5a55352cf7
commit c550a7b52c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,6 +5,7 @@
import { promises as fs } from 'fs';
import { createServer, Server } from 'net';
import { dirname } from 'path';
import * as vscode from 'vscode';
const enum State {
@ -72,8 +73,7 @@ export function activate(context: vscode.ExtensionContext): void {
e.affectsConfiguration(`${SETTING_SECTION}.${SETTING_STATE}`) ||
[...SETTINGS_CAUSE_REFRESH].some(setting => e.affectsConfiguration(setting))
) {
updateAutoAttach(State.Disabled);
updateAutoAttach(readCurrentState());
refreshAutoAttachVars();
}
}),
);
@ -85,6 +85,11 @@ export async function deactivate(): Promise<void> {
await destroyAttachServer();
}
function refreshAutoAttachVars() {
updateAutoAttach(State.Disabled);
updateAutoAttach(readCurrentState());
}
function getDefaultScope(info: ReturnType<vscode.WorkspaceConfiguration['inspect']>) {
if (!info) {
return vscode.ConfigurationTarget.Global;
@ -204,8 +209,22 @@ async function createAttachServer(context: vscode.ExtensionContext) {
return undefined;
}
server = createServerInner(ipcAddress).catch(err => {
console.error(err);
server = createServerInner(ipcAddress).catch(async err => {
console.error('[debug-auto-launch] Error creating auto attach server: ', err);
if (process.platform !== 'win32') {
// On macOS, and perhaps some Linux distros, the temporary directory can
// sometimes change. If it looks like that's the cause of a listener
// error, automatically refresh the auto attach vars.
try {
await fs.access(dirname(ipcAddress));
} catch {
console.error('[debug-auto-launch] Refreshing variables from error');
refreshAutoAttachVars();
return undefined;
}
}
return undefined;
});