Add app quality to extension API (#20731)

* Add app quality to extension API

* Comment

* Special case rc1 to stable
This commit is contained in:
Charles Gagnon
2022-10-05 14:42:23 -07:00
committed by GitHub
parent 29daa72ef1
commit 7b05194e77
9 changed files with 48 additions and 8 deletions

View File

@@ -128,11 +128,10 @@ export async function getParallelMessageProcessingConfig(): Promise<boolean> {
if (!config) {
return false;
}
const quality = await getProductQuality();
const setting = config.inspect(parallelMessageProcessingConfig);
// For dev environment, we want to enable the feature by default unless it is set explicitely.
// Note: the quality property is not set for dev environment, we can use this to determine whether it is dev environment.
return (quality === undefined && setting.globalValue === undefined && setting.workspaceValue === undefined) ? true : config[parallelMessageProcessingConfig];
return (azdata.env.quality === azdata.env.AppQuality.dev && setting.globalValue === undefined && setting.workspaceValue === undefined) ? true : config[parallelMessageProcessingConfig];
}
export function getLogFileName(prefix: string, pid: number): string {
@@ -396,7 +395,3 @@ export async function getOrDownloadServer(config: IConfig, handleServerEvent?: (
return serverdownloader.getOrDownloadServer();
}
async function getProductQuality(): Promise<string> {
const content = await fs.readFile(path.join(vscode.env.appRoot, 'product.json'));
return JSON.parse(content?.toString())?.quality;
}

View File

@@ -16,7 +16,10 @@ import { sendSettingChangedEvent, TelemetryActions, TelemetryReporter, Telemetry
const STORAGE_IV_KEY = 'queryHistory.storage-iv';
const STORAGE_KEY_KEY = 'queryHistory.storage-key';
const HISTORY_STORAGE_FILE_NAME = 'queryHistory.bin';
// We use a different file for every flavor of ADS because the secret storage is unique per-flavor and so we will have
// a different key/IV pair for each flavor with no easy way to transfer/read them. This means that each flavor of ADS
// will have its own unique history - even if they're all stored in the same location.
const HISTORY_STORAGE_FILE_NAME = azdata.env.quality === azdata.env.AppQuality.stable ? 'queryHistory.bin' : `queryHistory.${azdata.env.quality}.bin`;
const STORAGE_ENCRYPTION_ALGORITHM = 'aes-256-ctr';
const HISTORY_DEBOUNCE_MS = 10000;
const DEFAULT_CAPTURE_ENABLED = true;

View File

@@ -8,6 +8,23 @@
import * as vscode from 'vscode';
declare module 'azdata' {
export namespace env {
/**
* Well-known app quality values
*/
export enum AppQuality {
stable = 'stable',
insider = 'insider',
dev = 'dev'
}
/**
* The version of Azure Data Studio this is currently running as - such as `stable`, or `insider`
*/
export const quality: AppQuality | string | undefined;
}
export namespace nb {
export interface NotebookDocument {
/**

View File

@@ -606,6 +606,15 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
ExecutionPlanGraphElementPropertyBetterValue: sqlExtHostTypes.executionPlan.ExecutionPlanGraphElementPropertyBetterValue
};
// Dev/OSS builds don't have a quality set - give it a value here so it's more clear
let quality = initData.quality || 'dev';
// Special case rc1 quality, that should be treated as stable by extensions
quality = quality === 'rc1' ? 'stable' : quality;
const env: typeof azdata.env = {
AppQuality: sqlExtHostTypes.env.AppQuality,
quality
};
return {
version: initData.version,
accounts,
@@ -658,7 +667,8 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
sqlAssessment,
TextType: sqlExtHostTypes.TextType,
designers: designers,
executionPlan: executionPlan
executionPlan: executionPlan,
env
};
},
extHostNotebook: extHostNotebook,

View File

@@ -1058,3 +1058,14 @@ export namespace executionPlan {
None = 4
}
}
export namespace env {
/**
* Well-known app quality values
*/
export enum AppQuality {
stable = 'stable',
insider = 'insider',
dev = 'dev'
}
}

View File

@@ -102,6 +102,7 @@ export interface IWorkspaceData extends IStaticWorkspaceData {
export interface IInitData {
version: string;
vscodeVersion: string; // {{SQL CARBON EDIT}} add vscodeVersion
quality?: string; // {{SQL CARBON EDIT}} add quality
commit?: string;
parentPid: number;
environment: IEnvironment;

View File

@@ -384,6 +384,7 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost
commit: this._productService.commit,
version: this._productService.version,
vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version
quality: this._productService.quality, // {{SQL CARBON EDIT}} Add quality
parentPid: -1,
environment: {
isExtensionDevelopmentDebug: this._environmentService.debugRenderer,

View File

@@ -227,6 +227,7 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost {
commit: this._productService.commit,
version: this._productService.version,
vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version
quality: this._productService.quality, // {{SQL CARBON EDIT}} Add quality
parentPid: remoteInitData.pid,
environment: {
isExtensionDevelopmentDebug,

View File

@@ -550,6 +550,7 @@ export class LocalProcessExtensionHost implements IExtensionHost {
commit: this._productService.commit,
version: this._productService.version,
vscodeVersion: this._productService.vscodeVersion, // {{SQL CARBON EDIT}} add vscode version
quality: this._productService.quality, // {{SQL CARBON EDIT}} Add quality
parentPid: process.pid,
environment: {
isExtensionDevelopmentDebug: this._isExtensionDevDebug,