From eba315b6a2e0fdbcf1f41084b85b4eb6b8dade24 Mon Sep 17 00:00:00 2001 From: legendecas Date: Wed, 29 Dec 2021 05:34:51 +0800 Subject: [PATCH] feat(api-metrics): remove observable types (#2687) Co-authored-by: Valentin Marchaud Co-authored-by: Daniel Dyla --- .../src/NoopMeter.ts | 31 +++++-------------- .../src/types/Meter.ts | 17 +++++----- .../src/types/Metric.ts | 20 ++++-------- .../src/Meter.ts | 12 +++---- 4 files changed, 26 insertions(+), 54 deletions(-) diff --git a/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts b/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts index df48c30b1d7..a2ad1370a44 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/NoopMeter.ts @@ -20,13 +20,9 @@ import { Attributes, Counter, Histogram, - ObservableGauge, UpDownCounter, - ObservableBase, - ObservableCounter, - ObservableUpDownCounter, + ObservableCallback, } from './types/Metric'; -import { ObservableResult } from './types/ObservableResult'; /** * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses @@ -70,11 +66,9 @@ export class NoopMeter implements Meter { */ createObservableGauge( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableGauge { - return NOOP_OBSERVABLE_GAUGE_METRIC; - } + ): void {} /** * Returns a constant noop observable counter. @@ -84,11 +78,9 @@ export class NoopMeter implements Meter { */ createObservableCounter( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableCounter { - return NOOP_OBSERVABLE_COUNTER_METRIC; - } + ): void {} /** * Returns a constant noop up down observable counter. @@ -98,11 +90,9 @@ export class NoopMeter implements Meter { */ createObservableUpDownCounter( _name: string, - _callback: (observableResult: ObservableResult) => void, + _callback: ObservableCallback, _options?: MetricOptions, - ): ObservableUpDownCounter { - return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC; - } + ): void {} } export class NoopMetric {} @@ -119,16 +109,9 @@ export class NoopHistogramMetric extends NoopMetric implements Histogram { record(_value: number, _attributes: Attributes): void {} } -export class NoopObservableBaseMetric extends NoopMetric implements ObservableBase {} - export const NOOP_METER = new NoopMeter(); // Synchronous instruments export const NOOP_COUNTER_METRIC = new NoopCounterMetric(); export const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric(); export const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric(); - -// Asynchronous instruments -export const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableBaseMetric(); -export const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableBaseMetric(); -export const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableBaseMetric(); diff --git a/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts b/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts index 449741b147d..fb1978c3aa7 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/types/Meter.ts @@ -18,15 +18,12 @@ import { CounterOptions, HistogramOptions, UpDownCounterOptions } from '..'; import { Counter, Histogram, - ObservableCounter, + ObservableCallback, ObservableCounterOptions, - ObservableGauge, ObservableGaugeOptions, - ObservableUpDownCounter, ObservableUpDownCounterOptions, UpDownCounter, } from './Metric'; -import { ObservableResult } from './ObservableResult'; /** * An interface describes additional metadata of a meter. @@ -89,9 +86,9 @@ export interface Meter { */ createObservableGauge( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableGaugeOptions - ): ObservableGauge; + ): void; /** * Creates a new `ObservableCounter` metric. @@ -101,9 +98,9 @@ export interface Meter { */ createObservableCounter( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableCounterOptions - ): ObservableCounter; + ): void; /** * Creates a new `ObservableUpDownCounter` metric. @@ -113,7 +110,7 @@ export interface Meter { */ createObservableUpDownCounter( name: string, - callback: (observableResult: ObservableResult) => void, + callback: ObservableCallback, options?: ObservableUpDownCounterOptions - ): ObservableUpDownCounter; + ): void; } diff --git a/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts b/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts index 31c6a61c400..b541acc2fad 100644 --- a/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts +++ b/experimental/packages/opentelemetry-api-metrics/src/types/Metric.ts @@ -15,6 +15,7 @@ */ import { Context } from '@opentelemetry/api'; +import { ObservableResult } from './ObservableResult'; /** * Options needed for metric creation @@ -88,21 +89,12 @@ export interface Histogram { record(value: number, attributes?: Attributes, context?: Context): void; } -// ObservableBase has to be an Object but for now there is no field or method -// declared. -/** Base interface for the Observable metrics. */ -export type ObservableBase = Record; - -/** Base interface for the ObservableGauge metrics. */ -export type ObservableGauge = ObservableBase; - -/** Base interface for the ObservableUpDownCounter metrics. */ -export type ObservableUpDownCounter = ObservableBase; - -/** Base interface for the ObservableCounter metrics. */ -export type ObservableCounter = ObservableBase; - /** * key-value pairs passed by the user. */ export type Attributes = { [key: string]: string }; + +/** + * The observable callback for Observable instruments. + */ +export type ObservableCallback = (observableResult: ObservableResult) => void | Promise; diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts index 0e058447ddb..b47da6e835b 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/Meter.ts @@ -61,25 +61,25 @@ export class Meter implements metrics.Meter { createObservableGauge( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableGaugeOptions, - ): metrics.ObservableGauge { + ): void { throw new Error('Method not implemented.'); } createObservableCounter( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableCounterOptions, - ): metrics.ObservableCounter { + ): void { throw new Error('Method not implemented.'); } createObservableUpDownCounter( _name: string, - _callback: (observableResult: metrics.ObservableResult) => void, + _callback: metrics.ObservableCallback, _options?: metrics.ObservableUpDownCounterOptions, - ): metrics.ObservableUpDownCounter { + ): void { throw new Error('Method not implemented.'); }