File tree Expand file tree Collapse file tree 1 file changed +26
-0
lines changed
exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change 1717import threading
1818from abc import ABC , abstractmethod
1919from collections .abc import Sequence # noqa: F401
20+ from importlib .metadata import PackageNotFoundError , version
2021from logging import getLogger
2122from os import environ
2223from time import sleep
3637
3738from deprecated import deprecated
3839from google .rpc .error_details_pb2 import RetryInfo
40+ from packaging .version import InvalidVersion , Version
3941
4042from grpc import (
4143 ChannelCredentials ,
@@ -261,6 +263,7 @@ def __init__(
261263
262264 self ._export_lock = threading .Lock ()
263265 self ._shutdown = False
266+ self ._check_backoff_version ()
264267
265268 @abstractmethod
266269 def _translate_data (
@@ -370,3 +373,26 @@ def _exporting(self) -> str:
370373 warning messages.
371374 """
372375 pass
376+
377+ def _check_backoff_version (self ):
378+ try :
379+ # Attempt to get the version of `backoff`
380+ backoff_version_str = version ("backoff" )
381+ backoff_version = Version (backoff_version_str )
382+ except PackageNotFoundError :
383+ backoff_version = None
384+ logger .error (
385+ "backoff package not found, falling back to default behavior."
386+ )
387+ except InvalidVersion :
388+ logger .error (
389+ "Failed to parse backoff version; it may not follow semantic versioning."
390+ )
391+ backoff_version = None
392+
393+ # Proceed with version-specific handling if available
394+ if backoff_version :
395+ if backoff_version < Version ("2.2.1" ):
396+ logger .warning (
397+ f"Using backoff version { backoff_version } . Upgrade to 2.2.1 or later recommended for compatibility."
398+ )
You can’t perform that action at this time.
0 commit comments