11# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22# SPDX-License-Identifier: Apache-2.0
3- from typing import Dict , Optional
3+ from typing import Dict , Optional , Callable
44
55from typing_extensions import override
66
77from amazon .opentelemetry .distro .metric_attribute_generator import MetricAttributeGenerator
88from opentelemetry .context import Context
99from opentelemetry .metrics import Histogram
10+ from opentelemetry .sdk .metrics import MeterProvider
1011from opentelemetry .sdk .resources import Resource
1112from opentelemetry .sdk .trace import BoundedAttributes , ReadableSpan , Span , SpanProcessor , StatusCode
1213from opentelemetry .semconv .trace import SpanAttributes
@@ -45,19 +46,23 @@ class AwsSpanMetricsProcessor(SpanProcessor):
4546 _generator : MetricAttributeGenerator
4647 _resource : Resource
4748
49+ _force_flush_function : Callable
50+
4851 def __init__ (
4952 self ,
5053 error_histogram : Histogram ,
5154 fault_histogram : Histogram ,
5255 latency_histogram : Histogram ,
5356 generator : MetricAttributeGenerator ,
5457 resource : Resource ,
58+ force_flush_function : Callable ,
5559 ):
5660 self ._error_histogram = error_histogram
5761 self ._fault_histogram = fault_histogram
5862 self ._latency_histogram = latency_histogram
5963 self ._generator = generator
6064 self ._resource = resource
65+ self ._force_flush_function = force_flush_function
6166
6267 # pylint: disable=no-self-use
6368 @override
@@ -78,8 +83,8 @@ def shutdown(self) -> None:
7883
7984 # pylint: disable=no-self-use
8085 @override
81- def force_flush (self , timeout_millis : int = None ) -> bool :
82- return True
86+ def force_flush (self , timeout_millis : float = 10_000 ) -> bool :
87+ return self . _force_flush_function ( timeout_millis )
8388
8489 def _record_metrics (self , span : ReadableSpan , attributes : BoundedAttributes ) -> None :
8590 # Only record metrics if non-empty attributes are returned.
0 commit comments