5050 _is_retryable ,
5151 _load_session_from_envvar ,
5252)
53- from opentelemetry .proto .collector .metrics .v1 .metrics_service_pb2 import ( # noqa: F401
53+ from opentelemetry .proto .collector .metrics .v1 .metrics_service_pb2 import (
5454 ExportMetricsServiceRequest ,
5555)
5656from opentelemetry .proto .common .v1 .common_pb2 import ( # noqa: F401
6060 KeyValue ,
6161 KeyValueList ,
6262)
63- from opentelemetry .proto .metrics .v1 import metrics_pb2 as pb2 # noqa: F401
63+ from opentelemetry .proto .metrics .v1 import metrics_pb2 as pb2
6464from opentelemetry .proto .resource .v1 .resource_pb2 import Resource # noqa: F401
6565from opentelemetry .proto .resource .v1 .resource_pb2 import (
6666 Resource as PB2Resource ,
@@ -243,18 +243,19 @@ def _export(
243243
244244 def _export_with_retries (
245245 self ,
246- serialized_data : bytes ,
246+ export_request : ExportMetricsServiceRequest ,
247247 deadline_sec : float ,
248248 ) -> MetricExportResult :
249249 """Export serialized data with retry logic until success, non-transient error, or exponential backoff maxed out.
250250
251251 Args:
252- serialized_data: serialized metrics data to export
252+ export_request: ExportMetricsServiceRequest object containing metrics data to export
253253 deadline_sec: timestamp deadline for the export
254254
255255 Returns:
256256 MetricExportResult: SUCCESS if export succeeded, FAILURE otherwise
257257 """
258+ serialized_data = export_request .SerializeToString ()
258259 for retry_num in range (_MAX_RETRYS ):
259260 # multiplying by a random number between .8 and 1.2 introduces a +/20% jitter to each backoff.
260261 backoff_seconds = 2 ** retry_num * random .uniform (0.8 , 1.2 )
@@ -310,23 +311,21 @@ def export(
310311 _logger .warning ("Exporter already shutdown, ignoring batch" )
311312 return MetricExportResult .FAILURE
312313
313- serialized_data = encode_metrics (metrics_data )
314+ export_request = encode_metrics (metrics_data )
314315 deadline_sec = time () + self ._timeout
315316
316317 # If no batch size configured, export as single batch with retries as configured
317318 if self ._max_export_batch_size is None :
318- return self ._export_with_retries (
319- serialized_data .SerializeToString (), deadline_sec
320- )
319+ return self ._export_with_retries (export_request , deadline_sec )
321320
322321 # Else, export in batches of configured size
323- split_metrics_batches = list (
324- _split_metrics_data ( serialized_data , self ._max_export_batch_size )
322+ batched_export_requests = _split_metrics_data (
323+ export_request , self ._max_export_batch_size
325324 )
326325
327- for split_metrics_data in split_metrics_batches :
326+ for split_metrics_data in batched_export_requests :
328327 export_result = self ._export_with_retries (
329- split_metrics_data . SerializeToString () ,
328+ split_metrics_data ,
330329 deadline_sec ,
331330 )
332331 if export_result != MetricExportResult .SUCCESS :
@@ -353,18 +352,18 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool:
353352
354353
355354def _split_metrics_data (
356- metrics_data : pb2 . MetricsData ,
355+ metrics_data : ExportMetricsServiceRequest ,
357356 max_export_batch_size : int | None = None ,
358- ) -> Iterable [pb2 . MetricsData ]:
359- """Splits metrics data into several MetricsData (copies protobuf originals),
357+ ) -> Iterable [ExportMetricsServiceRequest ]:
358+ """Splits metrics data into several ExportMetricsServiceRequest (copies protobuf originals),
360359 based on configured data point max export batch size.
361360
362361 Args:
363362 metrics_data: metrics object based on HTTP protocol buffer definition
364363
365364 Returns:
366- Iterable[pb2.MetricsData ]: An iterable of pb2.MetricsData objects containing
367- pb2 .ResourceMetrics, pb2 .ScopeMetrics, pb2 .Metrics, and data points
365+ Iterable[ExportMetricsServiceRequest ]: An iterable of ExportMetricsServiceRequest objects containing
366+ ExportMetricsServiceRequest .ResourceMetrics, ExportMetricsServiceRequest .ScopeMetrics, ExportMetricsServiceRequest .Metrics, and data points
368367 """
369368 if not max_export_batch_size :
370369 return metrics_data
@@ -430,7 +429,7 @@ def _split_metrics_data(
430429 batch_size += 1
431430
432431 if batch_size >= max_export_batch_size :
433- yield pb2 . MetricsData (
432+ yield ExportMetricsServiceRequest (
434433 resource_metrics = _get_split_resource_metrics_pb2 (
435434 split_resource_metrics
436435 )
@@ -491,7 +490,7 @@ def _split_metrics_data(
491490 split_resource_metrics .pop ()
492491
493492 if batch_size > 0 :
494- yield pb2 . MetricsData (
493+ yield ExportMetricsServiceRequest (
495494 resource_metrics = _get_split_resource_metrics_pb2 (
496495 split_resource_metrics
497496 )
0 commit comments