diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts
index 2d09466d9bb..90767e1a856 100644
--- a/src/vs/code/electron-browser/issue/issueReporterMain.ts
+++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts
@@ -40,7 +40,7 @@ import { OcticonLabel } from 'vs/base/browser/ui/octiconLabel/octiconLabel';
import { normalizeGitHubUrl } from 'vs/code/electron-browser/issue/issueReporterUtil';
import { Button } from 'vs/base/browser/ui/button/button';
import { withUndefinedAsNull } from 'vs/base/common/types';
-import { SystemInfo } from 'vs/platform/diagnostics/common/diagnosticsService';
+import { SystemInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnosticsService';
const MAX_URL_LENGTH = platform.isWindows ? 2081 : 5400;
@@ -938,15 +938,24 @@ export class IssueReporter extends Disposable {
`;
systemInfo.remoteData.forEach(remote => {
- renderedData += `
-
-
- | Remote | ${remote.hostName} |
- | OS | ${remote.machineInfo.os} |
- | CPUs | ${remote.machineInfo.cpus} |
- | Memory (System) | ${remote.machineInfo.memory} |
- | VM | ${remote.machineInfo.vmHint} |
-
`;
+ if (isRemoteDiagnosticError(remote)) {
+ renderedData += `
+
+
+ | Remote | ${remote.hostName} |
+ | ${remote.errorMessage} |
+
`;
+ } else {
+ renderedData += `
+
+
+ | Remote | ${remote.hostName} |
+ | OS | ${remote.machineInfo.os} |
+ | CPUs | ${remote.machineInfo.cpus} |
+ | Memory (System) | ${remote.machineInfo.memory} |
+ | VM | ${remote.machineInfo.vmHint} |
+
`;
+ }
});
target.innerHTML = renderedData;
diff --git a/src/vs/code/electron-browser/issue/issueReporterModel.ts b/src/vs/code/electron-browser/issue/issueReporterModel.ts
index b4158cf6bb4..c1f78969153 100644
--- a/src/vs/code/electron-browser/issue/issueReporterModel.ts
+++ b/src/vs/code/electron-browser/issue/issueReporterModel.ts
@@ -5,7 +5,7 @@
import { assign } from 'vs/base/common/objects';
import { IssueType, ISettingSearchResult, IssueReporterExtensionData } from 'vs/platform/issue/common/issue';
-import { SystemInfo } from 'vs/platform/diagnostics/common/diagnosticsService';
+import { SystemInfo, isRemoteDiagnosticError } from 'vs/platform/diagnostics/common/diagnosticsService';
export interface IssueReporterData {
issueType: IssueType;
@@ -75,7 +75,8 @@ ${this.getInfos()}
private getRemoteOSes(): string {
if (this._data.systemInfo && this._data.systemInfo.remoteData.length) {
- return this._data.systemInfo.remoteData.map(remote => `Remote OS version: ${remote.machineInfo.os}`).join('\n') + '\n';
+ return this._data.systemInfo.remoteData
+ .map(remote => isRemoteDiagnosticError(remote) ? remote.errorMessage : `Remote OS version: ${remote.machineInfo.os}`).join('\n') + '\n';
}
return '';
@@ -168,7 +169,10 @@ ${this.getInfos()}
|VM|${this._data.systemInfo.vmHint}|`;
this._data.systemInfo.remoteData.forEach(remote => {
- md += `
+ if (isRemoteDiagnosticError(remote)) {
+ md += `\n\n${remote.errorMessage}`;
+ } else {
+ md += `
|Item|Value|
|---|---|
@@ -177,6 +181,7 @@ ${this.getInfos()}
|CPUs|${remote.machineInfo.cpus}|
|Memory (System)|${remote.machineInfo.memory}|
|VM|${remote.machineInfo.vmHint}|`;
+ }
});
}
diff --git a/src/vs/platform/diagnostics/common/diagnosticsService.ts b/src/vs/platform/diagnostics/common/diagnosticsService.ts
index d8d2ed70420..21cd8952e13 100644
--- a/src/vs/platform/diagnostics/common/diagnosticsService.ts
+++ b/src/vs/platform/diagnostics/common/diagnosticsService.ts
@@ -22,7 +22,7 @@ export interface SystemInfo extends IMachineInfo {
processArgs: string;
gpuStatus: any;
screenReader: string;
- remoteData: IRemoteDiagnosticInfo[];
+ remoteData: (IRemoteDiagnosticInfo | IRemoteDiagnosticError)[];
load?: string;
}
diff --git a/src/vs/workbench/services/extensions/node/multiExtensionManagement.ts b/src/vs/workbench/services/extensions/node/multiExtensionManagement.ts
index 5d9270a6e6b..c430a811ac5 100644
--- a/src/vs/workbench/services/extensions/node/multiExtensionManagement.ts
+++ b/src/vs/workbench/services/extensions/node/multiExtensionManagement.ts
@@ -8,7 +8,6 @@ import {
IExtensionManagementService, ILocalExtension, IGalleryExtension, InstallExtensionEvent, DidInstallExtensionEvent, IExtensionIdentifier, DidUninstallExtensionEvent, IReportedExtension, IGalleryMetadata,
IExtensionManagementServerService, IExtensionManagementServer, IExtensionGalleryService
} from 'vs/platform/extensionManagement/common/extensionManagement';
-import { flatten } from 'vs/base/common/arrays';
import { ExtensionType, IExtensionManifest, isLanguagePackExtension } from 'vs/platform/extensions/common/extensions';
import { URI } from 'vs/base/common/uri';
import { Disposable } from 'vs/base/common/lifecycle';
@@ -46,8 +45,10 @@ export class MultiExtensionManagementService extends Disposable implements IExte
}
getInstalled(type?: ExtensionType): Promise {
- return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.getInstalled(type)))
- .then(result => flatten(result));
+ const installedExtensions: ILocalExtension[] = [];
+ return Promise.all(this.servers.map(({ extensionManagementService }) => extensionManagementService.getInstalled(type).then(extensions => installedExtensions.push(...extensions))))
+ .then(_ => installedExtensions)
+ .catch(e => installedExtensions);
}
async uninstall(extension: ILocalExtension, force?: boolean): Promise {