Skip to content

Commit bec4984

Browse files
committed
Fix start_time_unix_nano for delta collection temporality
Fixes #4009
1 parent 72be755 commit bec4984

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,16 +278,16 @@ def collect(
278278
is AggregationTemporality.DELTA
279279
):
280280

281-
if current_value is None:
282-
return None
283-
284281
previous_collection_start_nano = (
285282
self._previous_collection_start_nano
286283
)
287284
self._previous_collection_start_nano = (
288285
collection_start_nano
289286
)
290287

288+
if current_value is None:
289+
return None
290+
291291
return NumberDataPoint(
292292
attributes=self._attributes,
293293
start_time_unix_nano=previous_collection_start_nano,

opentelemetry-sdk/tests/metrics/integration_test/test_sum_aggregation.py

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from logging import ERROR
1717
from platform import system
1818
from unittest import TestCase
19+
from time import sleep
1920

2021
from pytest import mark
2122

@@ -345,11 +346,43 @@ def test_synchronous_delta_temporality(self):
345346

346347
results.append(reader.get_metrics_data())
347348

348-
provider.shutdown()
349-
350349
for metrics_data in results:
351350
self.assertIsNone(metrics_data)
352351

352+
results = []
353+
354+
counter.add(1)
355+
results.append(reader.get_metrics_data())
356+
357+
sleep(0.1)
358+
results.append(reader.get_metrics_data())
359+
360+
counter.add(2)
361+
results.append(reader.get_metrics_data())
362+
363+
metric_data_0 = (
364+
results[0]
365+
.resource_metrics[0]
366+
.scope_metrics[0]
367+
.metrics[0]
368+
.data.data_points[0]
369+
)
370+
metric_data_2 = (
371+
results[2]
372+
.resource_metrics[0]
373+
.scope_metrics[0]
374+
.metrics[0]
375+
.data.data_points[0]
376+
)
377+
378+
self.assertIsNone(results[1])
379+
380+
self.assertGreater(
381+
metric_data_2.start_time_unix_nano, metric_data_0.time_unix_nano
382+
)
383+
384+
provider.shutdown()
385+
353386
@mark.skipif(
354387
system() != "Linux",
355388
reason=(

0 commit comments

Comments
 (0)