feat(medusa,medusa-telemetry): Add telemetry on feature flags (#2017)

This commit is contained in:
Oliver Windall Juhl
2022-08-09 16:27:12 +02:00
committed by GitHub
parent aaebb38eae
commit 900260c5b9
5 changed files with 54 additions and 28 deletions
+6
View File
@@ -0,0 +1,6 @@
---
"medusa-telemetry": patch
"@medusajs/medusa": patch
---
Adds enabled features flags to tracking event in `medusa-telemetry`
+4
View File
@@ -17,4 +17,8 @@ export const setTelemetryEnabled = (enabled = true) => {
telemeter.setTelemetryEnabled(enabled)
}
export function trackFeatureFlag(flag) {
telemeter.trackFeatureFlag(flag)
}
export { default as Telemeter } from "./telemeter"
+13 -4
View File
@@ -1,15 +1,15 @@
import os from "os"
import fs from "fs"
import { join, sep } from "path"
import isDocker from "is-docker"
import os from "os"
import { join, sep } from "path"
import { v4 as uuidv4 } from "uuid"
import Store from "./store"
import createFlush from "./util/create-flush"
import getTermProgram from "./util/get-term-program"
import { getCIName, isCI } from "./util/is-ci"
import isTruthy from "./util/is-truthy"
import showAnalyticsNotification from "./util/show-notification"
import { isCI, getCIName } from "./util/is-ci"
import Store from "./store"
const MEDUSA_TELEMETRY_VERBOSE = process.env.MEDUSA_TELEMETRY_VERBOSE || false
@@ -24,6 +24,8 @@ class Telemeter {
this.queueSize_ = this.store_.getQueueSize()
this.queueCount_ = this.store_.getQueueCount()
this.featureFlags_ = new Set()
}
getMachineId() {
@@ -130,6 +132,7 @@ class Telemeter {
os_info: this.getOsInfo(),
medusa_version: this.getMedusaVersion(),
cli_version: this.getCliVersion(),
feature_flags: Array.from(this.featureFlags_),
}
this.store_.addEvent(event)
@@ -152,6 +155,12 @@ class Telemeter {
}
}
}
trackFeatureFlag(flag) {
if (flag) {
this.featureFlags_.add(flag)
}
}
}
export default Telemeter
@@ -1,9 +1,10 @@
import path from "path"
import glob from "glob"
import path from "path"
import { trackFeatureFlag } from "medusa-telemetry"
import { FlagSettings } from "../../types/feature-flags"
import { FlagRouter } from "../../utils/flag-router"
import { Logger } from "../../types/global"
import { FlagRouter } from "../../utils/flag-router"
const isTruthy = (val: string | boolean | undefined): boolean => {
if (typeof val === "string") {
@@ -62,6 +63,10 @@ export default (
default:
flagConfig[flagSettings.key] = flagSettings.default_val
}
if (flagConfig[flagSettings.key]) {
trackFeatureFlag(flagSettings.key)
}
}
return new FlagRouter(flagConfig)
+24 -22
View File
@@ -1,24 +1,3 @@
import loadConfig from "./config"
import "reflect-metadata"
import Logger from "./logger"
import apiLoader from "./api"
import featureFlagsLoader from "./feature-flags"
import databaseLoader from "./database"
import defaultsLoader from "./defaults"
import expressLoader from "./express"
import modelsLoader from "./models"
import passportLoader from "./passport"
import pluginsLoader, { registerPluginModels } from "./plugins"
import redisLoader from "./redis"
import repositoriesLoader from "./repositories"
import requestIp from "request-ip"
import searchIndexLoader from "./search-index"
import servicesLoader from "./services"
import strategiesLoader from "./strategies"
import subscribersLoader from "./subscribers"
import { ClassOrFunctionReturning } from "awilix/lib/container"
import { Connection, getManager } from "typeorm"
import { Express, NextFunction, Request, Response } from "express"
import {
asFunction,
asValue,
@@ -26,8 +5,29 @@ import {
createContainer,
Resolver,
} from "awilix"
import { ClassOrFunctionReturning } from "awilix/lib/container"
import { Express, NextFunction, Request, Response } from "express"
import { track } from "medusa-telemetry"
import "reflect-metadata"
import requestIp from "request-ip"
import { Connection, getManager } from "typeorm"
import { MedusaContainer } from "../types/global"
import apiLoader from "./api"
import loadConfig from "./config"
import databaseLoader from "./database"
import defaultsLoader from "./defaults"
import expressLoader from "./express"
import featureFlagsLoader from "./feature-flags"
import Logger from "./logger"
import modelsLoader from "./models"
import passportLoader from "./passport"
import pluginsLoader, { registerPluginModels } from "./plugins"
import redisLoader from "./redis"
import repositoriesLoader from "./repositories"
import searchIndexLoader from "./search-index"
import servicesLoader from "./services"
import strategiesLoader from "./strategies"
import subscribersLoader from "./subscribers"
type Options = {
directory: string
@@ -82,6 +82,7 @@ export default async ({
})
const featureFlagRouter = featureFlagsLoader(configModule, Logger)
track("FEATURE_FLAGS_LOADED")
container.register({
logger: asValue(Logger),
@@ -179,7 +180,8 @@ export default async ({
const searchActivity = Logger.activity("Initializing search engine indexing")
track("SEARCH_ENGINE_INDEXING_STARTED")
await searchIndexLoader({ container })
const searchAct = Logger.success(searchActivity, "Indexing event emitted") || {}
const searchAct =
Logger.success(searchActivity, "Indexing event emitted") || {}
track("SEARCH_ENGINE_INDEXING_COMPLETED", { duration: searchAct.duration })
return { container, dbConnection, app: expressApp }