From 71d242a29918d511c9aaf42b3203c475818e41ab Mon Sep 17 00:00:00 2001 From: Jaanus Sellin Date: Wed, 21 Jun 2023 15:55:21 +0300 Subject: [PATCH] chore: remove variant metrics flag (#4042) --- frontend/src/interfaces/uiConfig.ts | 1 - .../__snapshots__/create-config.test.ts.snap | 2 - src/lib/db/client-metrics-store-v2.ts | 70 +++++++------------ src/lib/types/experimental.ts | 5 -- src/server-dev.ts | 1 - .../e2e/api/admin/client-metrics.e2e.test.ts | 9 +-- 6 files changed, 27 insertions(+), 61 deletions(-) diff --git a/frontend/src/interfaces/uiConfig.ts b/frontend/src/interfaces/uiConfig.ts index c7cb6ab6b1..45a5a18e63 100644 --- a/frontend/src/interfaces/uiConfig.ts +++ b/frontend/src/interfaces/uiConfig.ts @@ -48,7 +48,6 @@ export interface IFlags { demo?: boolean; groupRootRoles?: boolean; googleAuthEnabled?: boolean; - variantMetrics?: boolean; strategyImprovements?: boolean; disableBulkToggle?: boolean; segmentContextFieldUsage?: boolean; diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index f0e443de7f..fa740c86fd 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -97,7 +97,6 @@ exports[`should create default config 1`] = ` "segmentContextFieldUsage": false, "strategyImprovements": false, "strictSchemaValidation": false, - "variantMetrics": false, }, }, "flagResolver": FlagResolver { @@ -132,7 +131,6 @@ exports[`should create default config 1`] = ` "segmentContextFieldUsage": false, "strategyImprovements": false, "strictSchemaValidation": false, - "variantMetrics": false, }, "externalResolver": { "getVariant": [Function], diff --git a/src/lib/db/client-metrics-store-v2.ts b/src/lib/db/client-metrics-store-v2.ts index df75a7f45c..83ff90e50e 100644 --- a/src/lib/db/client-metrics-store-v2.ts +++ b/src/lib/db/client-metrics-store-v2.ts @@ -178,17 +178,15 @@ export class ClientMetricsStoreV2 implements IClientMetricsStoreV2 { const query = `${insert.toString()} ON CONFLICT (feature_name, app_name, environment, timestamp) DO UPDATE SET "yes" = "client_metrics_env"."yes" + EXCLUDED.yes, "no" = "client_metrics_env"."no" + EXCLUDED.no`; await this.db.raw(query); - if (this.flagResolver.isEnabled('variantMetrics')) { - const variantRows = spreadVariants(metrics).map(toVariantRow); - if (variantRows.length > 0) { - const insertVariants = this.db( - TABLE_VARIANTS, - ) - .insert(variantRows) - .toQuery(); - const variantsQuery = `${insertVariants.toString()} ON CONFLICT (feature_name, app_name, environment, timestamp, variant) DO UPDATE SET "count" = "client_metrics_env_variants"."count" + EXCLUDED.count`; - await this.db.raw(variantsQuery); - } + const variantRows = spreadVariants(metrics).map(toVariantRow); + if (variantRows.length > 0) { + const insertVariants = this.db( + TABLE_VARIANTS, + ) + .insert(variantRows) + .toQuery(); + const variantsQuery = `${insertVariants.toString()} ON CONFLICT (feature_name, app_name, environment, timestamp, variant) DO UPDATE SET "count" = "client_metrics_env_variants"."count" + EXCLUDED.count`; + await this.db.raw(variantsQuery); } } @@ -196,40 +194,24 @@ export class ClientMetricsStoreV2 implements IClientMetricsStoreV2 { featureName: string, hoursBack: number = 24, ): Promise { - if (this.flagResolver.isEnabled('variantMetrics')) { - const rows = await this.db(TABLE) - .select([`${TABLE}.*`, 'variant', 'count']) - .leftJoin(TABLE_VARIANTS, function () { - this.on( - `${TABLE_VARIANTS}.feature_name`, - `${TABLE}.feature_name`, - ) - .on(`${TABLE_VARIANTS}.app_name`, `${TABLE}.app_name`) - .on( - `${TABLE_VARIANTS}.environment`, - `${TABLE}.environment`, - ) - .on( - `${TABLE_VARIANTS}.timestamp`, - `${TABLE}.timestamp`, - ); - }) - .where(`${TABLE}.feature_name`, featureName) - .andWhereRaw( - `${TABLE}.timestamp >= NOW() - INTERVAL '${hoursBack} hours'`, - ); + const rows = await this.db(TABLE) + .select([`${TABLE}.*`, 'variant', 'count']) + .leftJoin(TABLE_VARIANTS, function () { + this.on( + `${TABLE_VARIANTS}.feature_name`, + `${TABLE}.feature_name`, + ) + .on(`${TABLE_VARIANTS}.app_name`, `${TABLE}.app_name`) + .on(`${TABLE_VARIANTS}.environment`, `${TABLE}.environment`) + .on(`${TABLE_VARIANTS}.timestamp`, `${TABLE}.timestamp`); + }) + .where(`${TABLE}.feature_name`, featureName) + .andWhereRaw( + `${TABLE}.timestamp >= NOW() - INTERVAL '${hoursBack} hours'`, + ); - const tokens = rows.reduce(variantRowReducer, {}); - return Object.values(tokens); - } else { - const rows = await this.db(TABLE) - .select('*') - .where({ feature_name: featureName }) - .andWhereRaw( - `timestamp >= NOW() - INTERVAL '${hoursBack} hours'`, - ); - return rows.map(fromRow); - } + const tokens = rows.reduce(variantRowReducer, {}); + return Object.values(tokens); } async getSeenAppsForFeatureToggle( diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index f26d795341..deab6d88fe 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -20,7 +20,6 @@ export type IFlagKey = | 'demo' | 'strategyImprovements' | 'googleAuthEnabled' - | 'variantMetrics' | 'disableBulkToggle' | 'experimentalExtendedTelemetry' | 'segmentContextFieldUsage' @@ -95,10 +94,6 @@ const flags: IFlags = { process.env.GOOGLE_AUTH_ENABLED, false, ), - variantMetrics: parseEnvVarBoolean( - process.env.UNLEASH_VARIANT_METRICS, - false, - ), experimentalExtendedTelemetry: parseEnvVarBoolean( process.env.UNLEASH_EXPERIMENTAL_EXTENDED_TELEMETRY, false, diff --git a/src/server-dev.ts b/src/server-dev.ts index 7a80f72f70..7ffd45e4cf 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -37,7 +37,6 @@ process.nextTick(async () => { embedProxyFrontend: true, anonymiseEventLog: false, responseTimeWithAppNameKillSwitch: false, - variantMetrics: true, strategyImprovements: true, segmentContextFieldUsage: true, advancedPlayground: true, diff --git a/src/test/e2e/api/admin/client-metrics.e2e.test.ts b/src/test/e2e/api/admin/client-metrics.e2e.test.ts index d851a6a971..270997e819 100644 --- a/src/test/e2e/api/admin/client-metrics.e2e.test.ts +++ b/src/test/e2e/api/admin/client-metrics.e2e.test.ts @@ -18,19 +18,12 @@ const fetchHoursBack = (hoursBack: number, feature: string = 'demo') => { }; beforeAll(async () => { - db = await dbInit('client_metrics_serial', getLogger, { - experimental: { - flags: { - variantMetrics: true, - }, - }, - }); + db = await dbInit('client_metrics_serial', getLogger); app = await setupAppWithCustomConfig( db.stores, { experimental: { flags: { - variantMetrics: true, strictSchemaValidation: true, }, },