|
48 | 48 | log = get_logger(__name__) |
49 | 49 |
|
50 | 50 | ENDPOINT_FETCHED_CONFIG = fetch_config_from_endpoint() |
| 51 | +DEFAULT_SERVICE_KEYS = frozenset(["_default_service", "_default_service_worker", "_default_service_producer"]) |
51 | 52 |
|
52 | 53 | DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP_DEFAULT = ( |
53 | 54 | r"(?ix)" |
|
209 | 210 | ) |
210 | 211 |
|
211 | 212 |
|
| 213 | +def _integration_default_service_names_from_config(int_config: IntegrationConfig) -> set[str]: |
| 214 | + names: set[str] = set() |
| 215 | + for attribute in DEFAULT_SERVICE_KEYS: |
| 216 | + if value := int_config.get(attribute): |
| 217 | + names.add(value) |
| 218 | + return names |
| 219 | + |
| 220 | + |
212 | 221 | def _parse_propagation_styles(styles_str: str) -> Optional[list[str]]: |
213 | 222 | """Helper to parse http propagation extract/inject styles via env variables. |
214 | 223 |
|
@@ -447,6 +456,8 @@ def __init__(self) -> None: |
447 | 456 |
|
448 | 457 | # Use a dict as underlying storing mechanism for integration configs |
449 | 458 | self._integration_configs: dict[str, IntegrationConfig] = {} |
| 459 | + # Union of `_default_service*` string values from integrations registered via `_add`. |
| 460 | + self._integration_default_services: frozenset[str] = frozenset() |
450 | 461 |
|
451 | 462 | self._debug_mode = _get_config("DD_TRACE_DEBUG", False, asbool, "OTEL_LOG_LEVEL") |
452 | 463 | self._startup_logs_enabled = _get_config("DD_TRACE_STARTUP_LOGS", False, asbool) |
@@ -772,6 +783,12 @@ def _get_extra_services(self) -> set[str]: |
772 | 783 | self._extra_services.pop() |
773 | 784 | return self._extra_services |
774 | 785 |
|
| 786 | + def _recompute_integration_default_services(self) -> None: |
| 787 | + names: set[str] = set() |
| 788 | + for int_conf in self._integration_configs.values(): |
| 789 | + names.update(_integration_default_service_names_from_config(int_conf)) |
| 790 | + self._integration_default_services = frozenset(names) |
| 791 | + |
775 | 792 | def _add(self, integration, settings, merge=True): |
776 | 793 | """Internal API that registers an integration with given default |
777 | 794 | settings. |
@@ -809,6 +826,8 @@ def _add(self, integration, settings, merge=True): |
809 | 826 | else: |
810 | 827 | self._integration_configs[integration] = IntegrationConfig(self, integration, settings) |
811 | 828 |
|
| 829 | + self._recompute_integration_default_services() |
| 830 | + |
812 | 831 | @cachedmethod() |
813 | 832 | def _header_tag_name(self, header_name: str) -> Optional[str]: |
814 | 833 | return self._http._header_tag_name(header_name) |
|
0 commit comments