Skip to content

Commit 8c66cc6

Browse files
committed
backoff version checking in exporter.py
1 parent 5de1ccb commit 8c66cc6

File tree

1 file changed

+26
-0
lines changed
  • exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc

1 file changed

+26
-0
lines changed

exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import threading
1818
from abc import ABC, abstractmethod
1919
from collections.abc import Sequence # noqa: F401
20+
from importlib.metadata import PackageNotFoundError, version
2021
from logging import getLogger
2122
from os import environ
2223
from time import sleep
@@ -36,6 +37,7 @@
3637

3738
from deprecated import deprecated
3839
from google.rpc.error_details_pb2 import RetryInfo
40+
from packaging.version import InvalidVersion, Version
3941

4042
from 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+
)

0 commit comments

Comments
 (0)