Skip to content

Commit

Permalink
refactor(sdk-metrics) Swap workaround types for @otel/api types
Browse files Browse the repository at this point in the history
The internal `Gauge` and the unnamed `MetricAdvice` types were
introduced in the 1.0 series when the metrics package depended on
an older version of the api package that didn't come with those
types, so the interfaces were essentially vendored into the package
for internal use.

Now with the 2.0 release on the horrizon, we can bump the required
version of @otel/api and is now safe to unvendor these types in
favor of the official ones.

This is not expected to have any impact on consumers as the types
are intended to be compatible for the positions they were used in.

Fixes #5223
Fixes #5224
  • Loading branch information
chancancode committed Dec 13, 2024
1 parent eb81e28 commit 16b6389
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 27 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG_NEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

### :boom: Breaking Change

* feat(sdk-metrics)!: bump minimum version of `@opentelemetry/api` dependency to 1.9.0 [#5254](https://github.com/open-telemetry/opentelemetry-js/pull/5254) @chancancode
* chore(shim-opentracing): replace deprecated SpanAttributes [#4430](https://github.com/open-telemetry/opentelemetry-js/pull/4430) @JamieDanielson
* chore(otel-core): replace deprecated SpanAttributes [#4408](https://github.com/open-telemetry/opentelemetry-js/pull/4408) @JamieDanielson
* feat(sdk-metrics)!: remove MeterProvider.addMetricReader() in favor of constructor option [#4419](https://github.com/open-telemetry/opentelemetry-js/pull/4419) @pichlermarc
Expand All @@ -23,6 +24,7 @@

### :house: (Internal)

* refactor(sdk-metrics): remove `Gauge` and `MetricAdvice` workaround types in favor of the upstream `@opentelemetry/api` types [#5254](https://github.com/open-telemetry/opentelemetry-js/pull/5254) @chancancode
* chore: remove checks for unsupported node versions [#4341](https://github.com/open-telemetry/opentelemetry-js/pull/4341) @dyladan
* refactor(sdk-trace-base): remove `BasicTracerProvider._registeredSpanProcessors` private property. [#5134](https://github.com/open-telemetry/opentelemetry-js/pull/5134) @david-luna
* refactor(sdk-trace-base): rename `BasicTracerProvider.activeSpanProcessor` private property. [#5211](https://github.com/open-telemetry/opentelemetry-js/pull/5211) @david-luna
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/sdk-metrics/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
"webpack-merge": "5.10.0"
},
"peerDependencies": {
"@opentelemetry/api": ">=1.3.0 <1.10.0"
"@opentelemetry/api": ">=1.9.0 <1.10.0"
},
"dependencies": {
"@opentelemetry/core": "1.29.0",
Expand Down
20 changes: 9 additions & 11 deletions packages/sdk-metrics/src/InstrumentDescriptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@
* limitations under the License.
*/

import { MetricOptions, ValueType, diag } from '@opentelemetry/api';
import {
MetricAdvice,
MetricOptions,
ValueType,
diag,
} from '@opentelemetry/api';
import { View } from './view/View';
import { equalsCaseInsensitive } from './utils';

Expand Down Expand Up @@ -44,18 +49,11 @@ export interface InstrumentDescriptor {
readonly type: InstrumentType;
readonly valueType: ValueType;
/**
* @experimental
* See {@link MetricAdvice}
*
* This is intentionally not using the API's type as it's only available from @opentelemetry/api 1.7.0 and up.
* In SDK 2.0 we'll be able to bump the minimum API version and remove this workaround.
* @experimental
*/
readonly advice: {
/**
* Hint the explicit bucket boundaries for SDK if the metric has been
* aggregated with a HistogramAggregator.
*/
explicitBucketBoundaries?: number[];
};
readonly advice: MetricAdvice;
}

export function createInstrumentDescriptor(
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk-metrics/src/Instruments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import {
ValueType,
UpDownCounter,
Counter,
Gauge,
Histogram,
Observable,
ObservableCallback,
Expand All @@ -36,7 +37,6 @@ import {
AsyncWritableMetricStorage,
WritableMetricStorage,
} from './state/WritableMetricStorage';
import { Gauge } from './types';

export class SyncInstrument {
constructor(
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk-metrics/src/Meter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import {
Meter as IMeter,
MetricOptions,
Gauge,
Histogram,
Counter,
UpDownCounter,
Expand All @@ -40,7 +41,6 @@ import {
UpDownCounterInstrument,
} from './Instruments';
import { MeterSharedState } from './state/MeterSharedState';
import { Gauge } from './types';

/**
* This class implements the {@link IMeter} interface.
Expand Down
12 changes: 0 additions & 12 deletions packages/sdk-metrics/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Context, Attributes } from '@opentelemetry/api';

export type CommonReaderOptions = {
timeoutMillis?: number;
Expand All @@ -24,14 +23,3 @@ export type CollectionOptions = CommonReaderOptions;
export type ShutdownOptions = CommonReaderOptions;

export type ForceFlushOptions = CommonReaderOptions;

/**
* This is intentionally not using the API's type as it's only available from @opentelemetry/api 1.9.0 and up.
* In SDK 2.0 we'll be able to bump the minimum API version and remove this workaround.
*/
export interface Gauge<AttributesTypes extends Attributes = Attributes> {
/**
* Records a measurement. Value of the measurement must not be negative.
*/
record(value: number, attributes?: AttributesTypes, context?: Context): void;
}

0 comments on commit 16b6389

Please sign in to comment.