mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-10 17:53:36 +02:00
Renames to have gauge and task together
This commit is contained in:
parent
05a338c487
commit
f5cf84c8d3
@ -20,9 +20,13 @@ type GaugeDefinition<T, L extends string> = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
type Task = () => Promise<void>;
|
type Task = () => Promise<void>;
|
||||||
|
|
||||||
|
interface GaugeUpdater {
|
||||||
|
target: Gauge<string>;
|
||||||
|
task: Task;
|
||||||
|
}
|
||||||
export class DbMetricsMonitor {
|
export class DbMetricsMonitor {
|
||||||
private tasks: Set<Task> = new Set();
|
private updaters: Map<string, GaugeUpdater> = new Map();
|
||||||
private gauges: Map<string, Gauge<string>> = new Map();
|
|
||||||
private log: Logger;
|
private log: Logger;
|
||||||
|
|
||||||
constructor({ getLogger }: Pick<IUnleashConfig, 'getLogger'>) {
|
constructor({ getLogger }: Pick<IUnleashConfig, 'getLogger'>) {
|
||||||
@ -37,7 +41,6 @@ export class DbMetricsMonitor {
|
|||||||
definition: GaugeDefinition<T, L>,
|
definition: GaugeDefinition<T, L>,
|
||||||
): Task {
|
): Task {
|
||||||
const gauge = createGauge(definition);
|
const gauge = createGauge(definition);
|
||||||
this.gauges.set(definition.name, gauge);
|
|
||||||
const task = async () => {
|
const task = async () => {
|
||||||
try {
|
try {
|
||||||
const result = await definition.query();
|
const result = await definition.query();
|
||||||
@ -56,12 +59,15 @@ export class DbMetricsMonitor {
|
|||||||
this.log.warn(`Failed to refresh ${definition.name}`, e);
|
this.log.warn(`Failed to refresh ${definition.name}`, e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.tasks.add(task);
|
this.updaters.set(definition.name, { target: gauge, task });
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshDbMetrics = async () => {
|
refreshDbMetrics = async () => {
|
||||||
for (const task of this.tasks) {
|
const tasks = Array.from(this.updaters.values()).map(
|
||||||
|
(updater) => updater.task,
|
||||||
|
);
|
||||||
|
for (const task of tasks) {
|
||||||
await task();
|
await task();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -70,7 +76,7 @@ export class DbMetricsMonitor {
|
|||||||
name: string,
|
name: string,
|
||||||
labels?: Record<string, string | number>,
|
labels?: Record<string, string | number>,
|
||||||
): Promise<number | undefined> {
|
): Promise<number | undefined> {
|
||||||
const gauge = await this.gauges.get(name)?.gauge?.get();
|
const gauge = await this.updaters.get(name)?.target.gauge?.get();
|
||||||
if (gauge && gauge.values.length > 0) {
|
if (gauge && gauge.values.length > 0) {
|
||||||
const values = labels
|
const values = labels
|
||||||
? gauge.values.filter(({ labels: l }) => {
|
? gauge.values.filter(({ labels: l }) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user