diff --git a/CHANGELOG.md b/CHANGELOG.md index adbcd49716..eac5a63fe0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ For semantic convention package changes, see the [semconv CHANGELOG](packages/se ### :boom: Breaking Change * feat(sdk-metrics): Add support for aggregation cardinality limit with a default limit of 2000. This limit can be customized via views [#5182](https://github.com/open-telemetry/opentelemetry-js/pull/5128) +* fix(InMemoryMetricExporter) clear metrics after shutdown to align with other exporters [#5131](https://github.com/open-telemetry/opentelemetry-js/issues/5131) @paper2 ### :rocket: (Enhancement) diff --git a/packages/sdk-metrics/src/export/InMemoryMetricExporter.ts b/packages/sdk-metrics/src/export/InMemoryMetricExporter.ts index 2a80973bb9..fd1bcf78e1 100644 --- a/packages/sdk-metrics/src/export/InMemoryMetricExporter.ts +++ b/packages/sdk-metrics/src/export/InMemoryMetricExporter.ts @@ -76,6 +76,7 @@ export class InMemoryMetricExporter implements PushMetricExporter { shutdown(): Promise { this._shutdown = true; + this._metrics = []; return Promise.resolve(); } } diff --git a/packages/sdk-metrics/test/export/InMemoryMetricExporter.test.ts b/packages/sdk-metrics/test/export/InMemoryMetricExporter.test.ts index 1e14a8ed5e..93c9cfdf43 100644 --- a/packages/sdk-metrics/test/export/InMemoryMetricExporter.test.ts +++ b/packages/sdk-metrics/test/export/InMemoryMetricExporter.test.ts @@ -113,6 +113,24 @@ describe('InMemoryMetricExporter', () => { await metricReader.shutdown(); }); + it('should get no metrics after shutdown', async () => { + const counter = meter.createCounter('counter_total', { + description: 'a test description', + }); + const counterAttribute = { key1: 'attributeValue1' }; + counter.add(10, counterAttribute); + + const exportedMetrics = await waitForNumberOfExports(exporter, 1); + assert.ok(exportedMetrics.length > 0); + + await exporter.shutdown(); + + const otherMetrics = exporter.getMetrics(); + assert.ok(otherMetrics.length === 0); + + await metricReader.shutdown(); + }); + it('should be able to access metric', async () => { const counter = meter.createCounter('counter_total', { description: 'a test description',