|
89 | 89 | MAX_EVENT_ATTRS = 4 |
90 | 90 | MAX_LINK_ATTRS = 32 |
91 | 91 | MAX_SPAN_ATTRS = 32 |
| 92 | +MAX_ATTR_KEY_BYTES = 128 |
| 93 | +MAX_ATTR_VAL_BYTES = 16 * 1024 # 16 kilobytes |
92 | 94 |
|
93 | 95 |
|
94 | 96 | class CloudTraceSpanExporter(SpanExporter): |
@@ -437,7 +439,7 @@ def _extract_attributes( |
437 | 439 | ) # type: BoundedDict[str, trace_types.AttributeValue] |
438 | 440 | invalid_value_dropped_count = 0 |
439 | 441 | for ot_key, ot_value in attrs.items() if attrs else []: |
440 | | - key = _truncate_str(ot_key, 128)[0] |
| 442 | + key = _truncate_str(ot_key, MAX_ATTR_KEY_BYTES)[0] |
441 | 443 | if key in LABELS_MAPPING: # pylint: disable=consider-using-get |
442 | 444 | key = LABELS_MAPPING[key] |
443 | 445 | value = _format_attribute_value(ot_value) |
@@ -485,14 +487,16 @@ def _format_attribute_value( |
485 | 487 | value_type = "int_value" |
486 | 488 | elif isinstance(value, str): |
487 | 489 | value_type = "string_value" |
488 | | - value = _get_truncatable_str_object(value, 256) |
| 490 | + value = _get_truncatable_str_object(value, MAX_ATTR_VAL_BYTES) |
489 | 491 | elif isinstance(value, float): |
490 | 492 | value_type = "string_value" |
491 | | - value = _get_truncatable_str_object("{:0.4f}".format(value), 256) |
| 493 | + value = _get_truncatable_str_object( |
| 494 | + "{:0.4f}".format(value), MAX_ATTR_VAL_BYTES |
| 495 | + ) |
492 | 496 | elif isinstance(value, SequenceABC): |
493 | 497 | value_type = "string_value" |
494 | 498 | value = _get_truncatable_str_object( |
495 | | - ",".join(str(x) for x in value), 256 |
| 499 | + ",".join(str(x) for x in value), MAX_ATTR_VAL_BYTES |
496 | 500 | ) |
497 | 501 | else: |
498 | 502 | logger.warning( |
|
0 commit comments