|
15 | 15 | from logging import getLogger
|
16 | 16 | from threading import RLock
|
17 | 17 | from time import time_ns
|
18 |
| -from typing import Dict, List |
| 18 | +from typing import Dict, List, Optional |
19 | 19 |
|
20 | 20 | from opentelemetry.metrics import (
|
21 | 21 | Asynchronous,
|
@@ -119,7 +119,7 @@ def consume_measurement(self, measurement: Measurement) -> None:
|
119 | 119 | ):
|
120 | 120 | view_instrument_match.consume_measurement(measurement)
|
121 | 121 |
|
122 |
| - def collect(self) -> MetricsData: |
| 122 | + def collect(self) -> Optional[MetricsData]: |
123 | 123 | # Use a list instead of yielding to prevent a slow reader from holding
|
124 | 124 | # SDK locks
|
125 | 125 |
|
@@ -231,17 +231,19 @@ def collect(self) -> MetricsData:
|
231 | 231 | instrument.instrumentation_scope
|
232 | 232 | ].metrics.extend(metrics)
|
233 | 233 |
|
234 |
| - return MetricsData( |
235 |
| - resource_metrics=[ |
236 |
| - ResourceMetrics( |
237 |
| - resource=self._sdk_config.resource, |
238 |
| - scope_metrics=list( |
239 |
| - instrumentation_scope_scope_metrics.values() |
240 |
| - ), |
241 |
| - schema_url=self._sdk_config.resource.schema_url, |
242 |
| - ) |
243 |
| - ] |
244 |
| - ) |
| 234 | + scope_metrics = list(instrumentation_scope_scope_metrics.values()) |
| 235 | + |
| 236 | + if scope_metrics: |
| 237 | + |
| 238 | + return MetricsData( |
| 239 | + resource_metrics=[ |
| 240 | + ResourceMetrics( |
| 241 | + resource=self._sdk_config.resource, |
| 242 | + scope_metrics=scope_metrics, |
| 243 | + schema_url=self._sdk_config.resource.schema_url, |
| 244 | + ) |
| 245 | + ] |
| 246 | + ) |
245 | 247 |
|
246 | 248 | def _handle_view_instrument_match(
|
247 | 249 | self,
|
|
0 commit comments