Skip to content

Commit 91b9abd

Browse files
authored
feat(otlp-transformer)!: accept ResourceMetrics instead of ResoruceMetrics[] in metrics serializers (#5159)
1 parent b7c03d2 commit 91b9abd

File tree

7 files changed

+28
-143
lines changed

7 files changed

+28
-143
lines changed

experimental/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ All notable changes to experimental packages in this project will be documented
6262
* This type is scheduled for removal in a future version of this package, please treat all exporters as `SpanExporter`, `PushMetricExporter` or `LogRecordExporter`, based on their respective type.
6363
* feat(otlp-grpc-exporter-base)!: collapse base classes into one [#5031](https://github.com/open-telemetry/opentelemetry-js/pull/5031)
6464
* `OTLPGRPCExporterNodeBase` has been removed in favor of a platform-agnostic implementation (`OTLPExporterBase` from `@opentelemetry/otlp-exporter-base`)
65+
* feat(otlp-transformer)!: accept `ResourceMetrics` in serializers instead of `ResourceMetrics[]`
66+
* (user-facing): `ProtobufMetricsSerializer` now only accepts `ResourceMetrics` instead of `ResourceMetrics[]` to align with `PushMetricExporter` requirements
67+
* (user-facing): `JsonMetricsSerializer` now only accepts `ResourceMetrics` instead of `ResourceMetrics[]` to align with `PushMetricExporter` requirements
6568

6669
### :rocket: (Enhancement)
6770

experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/OTLPMetricExporterBase.ts

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { ExportResult, getEnv } from '@opentelemetry/core';
17+
import { getEnv } from '@opentelemetry/core';
1818
import {
1919
AggregationTemporality,
2020
AggregationTemporalitySelector,
@@ -28,7 +28,10 @@ import {
2828
AggregationTemporalityPreference,
2929
OTLPMetricExporterOptions,
3030
} from './OTLPMetricExporterOptions';
31-
import { IOtlpExportDelegate } from '@opentelemetry/otlp-exporter-base';
31+
import {
32+
IOtlpExportDelegate,
33+
OTLPExporterBase,
34+
} from '@opentelemetry/otlp-exporter-base';
3235
import { diag } from '@opentelemetry/api';
3336

3437
export const CumulativeTemporalitySelector: AggregationTemporalitySelector =
@@ -117,37 +120,24 @@ function chooseAggregationSelector(
117120
}
118121
}
119122

120-
export class OTLPMetricExporterBase implements PushMetricExporter {
121-
public _delegate: IOtlpExportDelegate<ResourceMetrics[]>;
122-
private _aggregationTemporalitySelector: AggregationTemporalitySelector;
123-
private _aggregationSelector: AggregationSelector;
123+
export class OTLPMetricExporterBase
124+
extends OTLPExporterBase<ResourceMetrics>
125+
implements PushMetricExporter
126+
{
127+
private readonly _aggregationTemporalitySelector: AggregationTemporalitySelector;
128+
private readonly _aggregationSelector: AggregationSelector;
124129

125130
constructor(
126-
delegate: IOtlpExportDelegate<ResourceMetrics[]>,
131+
delegate: IOtlpExportDelegate<ResourceMetrics>,
127132
config?: OTLPMetricExporterOptions
128133
) {
129-
this._delegate = delegate;
134+
super(delegate);
130135
this._aggregationSelector = chooseAggregationSelector(config);
131136
this._aggregationTemporalitySelector = chooseTemporalitySelector(
132137
config?.temporalityPreference
133138
);
134139
}
135140

136-
export(
137-
metrics: ResourceMetrics,
138-
resultCallback: (result: ExportResult) => void
139-
): void {
140-
this._delegate.export([metrics], resultCallback);
141-
}
142-
143-
async shutdown(): Promise<void> {
144-
await this._delegate.shutdown();
145-
}
146-
147-
forceFlush(): Promise<void> {
148-
return this._delegate.forceFlush();
149-
}
150-
151141
selectAggregation(instrumentType: InstrumentType): Aggregation {
152142
return this._aggregationSelector(instrumentType);
153143
}

experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/index-webpack.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,5 @@
1616
const testsContext = require.context('../browser', true, /test$/);
1717
testsContext.keys().forEach(testsContext);
1818

19-
const testsContextCommon = require.context('../common', true, /test$/);
20-
testsContextCommon.keys().forEach(testsContextCommon);
21-
2219
const srcContext = require.context('.', true, /src$/);
2320
srcContext.keys().forEach(srcContext);

experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/common/OTLPMetricExporterBase.test.ts

Lines changed: 0 additions & 105 deletions
This file was deleted.

experimental/packages/otlp-transformer/src/json/serializers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ export const JsonTraceSerializer: ISerializer<
4343
};
4444

4545
export const JsonMetricsSerializer: ISerializer<
46-
ResourceMetrics[],
46+
ResourceMetrics,
4747
IExportMetricsServiceResponse
4848
> = {
49-
serializeRequest: (arg: ResourceMetrics[]) => {
50-
const request = createExportMetricsServiceRequest(arg, {
49+
serializeRequest: (arg: ResourceMetrics) => {
50+
const request = createExportMetricsServiceRequest([arg], {
5151
useLongBits: false,
5252
});
5353
const encoder = new TextEncoder();

experimental/packages/otlp-transformer/src/protobuf/serializers.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ export const ProtobufLogsSerializer: ISerializer<
6868
};
6969

7070
export const ProtobufMetricsSerializer: ISerializer<
71-
ResourceMetrics[],
71+
ResourceMetrics,
7272
IExportMetricsServiceResponse
7373
> = {
74-
serializeRequest: (arg: ResourceMetrics[]) => {
75-
const request = createExportMetricsServiceRequest(arg);
74+
serializeRequest: (arg: ResourceMetrics) => {
75+
const request = createExportMetricsServiceRequest([arg]);
7676
return metricsRequestType.encode(request).finish();
7777
},
7878
deserializeResponse: (arg: Uint8Array) => {

experimental/packages/otlp-transformer/test/metrics.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -788,11 +788,11 @@ describe('Metrics', () => {
788788

789789
describe('ProtobufMetricsSerializer', function () {
790790
it('serializes an export request', () => {
791-
const serialized = ProtobufMetricsSerializer.serializeRequest([
791+
const serialized = ProtobufMetricsSerializer.serializeRequest(
792792
createResourceMetrics([
793793
createCounterData(10, AggregationTemporality.DELTA),
794-
]),
795-
]);
794+
])
795+
);
796796
assert.ok(serialized, 'serialized response is undefined');
797797
const decoded =
798798
root.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.decode(
@@ -873,11 +873,11 @@ describe('Metrics', () => {
873873

874874
describe('JsonMetricsSerializer', function () {
875875
it('serializes an export request', () => {
876-
const serialized = JsonMetricsSerializer.serializeRequest([
876+
const serialized = JsonMetricsSerializer.serializeRequest(
877877
createResourceMetrics([
878878
createCounterData(10, AggregationTemporality.DELTA),
879-
]),
880-
]);
879+
])
880+
);
881881

882882
const decoder = new TextDecoder();
883883
const expected = {

0 commit comments

Comments
 (0)