Wait until config is loaded to load otel

This commit is contained in:
David Baker 2023-03-22 12:41:33 +00:00
parent ec88907981
commit 48493a96e1
2 changed files with 16 additions and 3 deletions

View file

@ -23,6 +23,7 @@ import * as Sentry from "@sentry/react";
import { getUrlParams } from "./UrlParams";
import { Config } from "./config/Config";
import { ElementCallOpenTelemetry } from "./otel/otel";
enum LoadState {
None,
@ -35,6 +36,7 @@ class DependencyLoadStates {
// olm: LoadState = LoadState.None;
config: LoadState = LoadState.None;
sentry: LoadState = LoadState.None;
openTelemetry: LoadState = LoadState.None;
allDepsAreLoaded() {
return !Object.values(this).some((s) => s !== LoadState.Loaded);
@ -209,6 +211,15 @@ export class Initializer {
this.loadStates.sentry = LoadState.Loaded;
}
// OpenTelemetry (also only after config loaded)
if (
this.loadStates.openTelemetry === LoadState.None &&
this.loadStates.config === LoadState.Loaded
) {
ElementCallOpenTelemetry.globalInit();
this.loadStates.openTelemetry = LoadState.Loaded;
}
if (this.loadStates.allDepsAreLoaded()) {
// resolve if there is no dependency that is not loaded
resolve();

View file

@ -39,6 +39,11 @@ export class ElementCallOpenTelemetry {
private _tracer: Tracer;
private _anonymity: Anonymity;
static globalInit(): void {
settingsBus.on("opt-in-analytics", recheckOTelEnabledStatus);
recheckOTelEnabledStatus(getSetting("opt-in-analytics", false));
}
static get instance(): ElementCallOpenTelemetry {
return sharedInstance;
}
@ -93,6 +98,3 @@ function recheckOTelEnabledStatus(optInAnalayticsEnabled: boolean): void {
sharedInstance = undefined;
}
}
settingsBus.on("opt-in-analytics", recheckOTelEnabledStatus);
recheckOTelEnabledStatus(getSetting("opt-in-analytics", false));