- Notifications
You must be signed in to change notification settings - Fork 754
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe your environment
OS: any
Python version: any
SDK version: 1.30.0
API version: 1.30.0
What happened?
OTLP proto was expanded to allow for bytes values in attributes about 3 years ago.
#4118 / #4128 implemented that in the OTLP exporter.
Unfortunately, the #4218 alone is not enough.
The bytes-valued attributes are coerced to strings way before they reach the exporter.
It happens here:
opentelemetry-python/opentelemetry-api/src/opentelemetry/attributes/__init__.py
Lines 110 to 121 in afec2dd
| def _clean_attribute_value( | |
| value: types.AttributeValue, limit: Optional[int] | |
| ) -> Optional[types.AttributeValue]: | |
| if value is None: | |
| return None | |
| if isinstance(value, bytes): | |
| try: | |
| value = value.decode() | |
| except UnicodeDecodeError: | |
| _logger.warning("Byte attribute could not be decoded.") | |
| return None |
Steps to Reproduce
- set attribute with bytes value that is internally string-safe
- export
- see
stringValueinstead ofbytesValuein the output
Expected Result
produces bytesValue: <bytes>
Actual Result
produces stringValue: <str> or drops the attribute with a warning
Additional context
#4118 added encoding of bytes attributes in OTLP
Would you like to implement a fix?
None
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working