From fe9037b64b7094a20f073f6bdf23f66ac9dced00 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Fri, 21 Oct 2022 20:47:04 +0200 Subject: [PATCH] Fixes #162590: Do not retry during the initial connection attempt if the resolver throws a `RemoteAuthorityResolverError.NotAvailable` error --- src/vs/platform/remote/common/remoteAuthorityResolver.ts | 4 ++++ .../extensions/electron-sandbox/electronExtensionService.ts | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/vs/platform/remote/common/remoteAuthorityResolver.ts b/src/vs/platform/remote/common/remoteAuthorityResolver.ts index 663eeaee64bf2..87ec7fead5e6d 100644 --- a/src/vs/platform/remote/common/remoteAuthorityResolver.ts +++ b/src/vs/platform/remote/common/remoteAuthorityResolver.ts @@ -64,6 +64,10 @@ export enum RemoteAuthorityResolverErrorCode { export class RemoteAuthorityResolverError extends ErrorNoTelemetry { + public static isNotAvailable(err: any): boolean { + return (err instanceof RemoteAuthorityResolverError) && err._code === RemoteAuthorityResolverErrorCode.NotAvailable; + } + public static isTemporarilyNotAvailable(err: any): boolean { return (err instanceof RemoteAuthorityResolverError) && err._code === RemoteAuthorityResolverErrorCode.TemporarilyNotAvailable; } diff --git a/src/vs/workbench/services/extensions/electron-sandbox/electronExtensionService.ts b/src/vs/workbench/services/extensions/electron-sandbox/electronExtensionService.ts index 71edeaee50690..e270e589674dd 100644 --- a/src/vs/workbench/services/extensions/electron-sandbox/electronExtensionService.ts +++ b/src/vs/workbench/services/extensions/electron-sandbox/electronExtensionService.ts @@ -431,6 +431,11 @@ export abstract class ElectronExtensionService extends AbstractExtensionService throw err; } + if (RemoteAuthorityResolverError.isNotAvailable(err)) { + // The resolver is not available and asked us to not retry + throw err; + } + if (attempt >= MAX_ATTEMPTS) { // Too many failed attempts, give up throw err;