Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 754fc36

Browse files
soumyadeepm04lzchenocelotl
authored
fix _encode_events assumes events.attributes.dropped exists (open-telemetry#3965)
* fix _encode_events assuming events.attributes.dropped exists * test * restore * test * restore * added unit test * changelog update --------- Co-authored-by: Leighton Chen <[email protected]> Co-authored-by: Diego Hurtado <[email protected]>
1 parent 0049052 commit 754fc36

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2929

3030
## Version 1.25.0/0.46b0 (2024-05-30)
3131

32+
- Fix _encode_events assumes events.attributes.dropped exists
33+
([#3965](https://github.com/open-telemetry/opentelemetry-python/pull/3965))
3234
- Fix class BoundedAttributes to have RLock rather than Lock
3335
([#3859](https://github.com/open-telemetry/opentelemetry-python/pull/3859))
3436
- Remove thread lock by loading RuntimeContext explicitly.

exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/trace_encoder/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def _encode_events(
142142
name=event.name,
143143
time_unix_nano=event.timestamp,
144144
attributes=_encode_attributes(event.attributes),
145-
dropped_attributes_count=event.attributes.dropped,
145+
dropped_attributes_count=event.dropped_attributes,
146146
)
147147
pb2_events.append(encoded_event)
148148
return pb2_events

exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def setUp(self):
149149
)
150150

151151
type(event_mock).name = PropertyMock(return_value="a")
152-
152+
type(event_mock).dropped_attributes = PropertyMock(return_value=0)
153153
self.span = _Span(
154154
"a",
155155
context=Mock(

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,12 @@ def __init__(
337337
def attributes(self) -> types.Attributes:
338338
return self._attributes
339339

340+
@property
341+
def dropped_attributes(self) -> int:
342+
if isinstance(self._attributes, BoundedAttributes):
343+
return self._attributes.dropped
344+
return 0
345+
340346

341347
def _check_span_ended(func):
342348
def wrapper(self, *args, **kwargs):

opentelemetry-sdk/tests/trace/test_trace.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from unittest.mock import Mock, patch
2828

2929
from opentelemetry import trace as trace_api
30+
from opentelemetry.attributes import BoundedAttributes
3031
from opentelemetry.context import Context
3132
from opentelemetry.sdk import resources, trace
3233
from opentelemetry.sdk.environment_variables import (
@@ -635,6 +636,15 @@ def test_events(self):
635636
span = trace.ReadableSpan("test", events=events)
636637
self.assertEqual(span.events, tuple(events))
637638

639+
def test_event_dropped_attributes(self):
640+
event1 = trace.Event(
641+
"foo1", BoundedAttributes(0, attributes={"bar1": "baz1"})
642+
)
643+
self.assertEqual(event1.dropped_attributes, 1)
644+
645+
event2 = trace.Event("foo2", {"bar2": "baz2"})
646+
self.assertEqual(event2.dropped_attributes, 0)
647+
638648

639649
class DummyError(Exception):
640650
pass
@@ -1837,7 +1847,7 @@ def test_dropped_attributes(self):
18371847
self.assertEqual(1, span.dropped_links)
18381848
self.assertEqual(2, span.dropped_attributes)
18391849
self.assertEqual(3, span.dropped_events)
1840-
self.assertEqual(2, span.events[0].attributes.dropped)
1850+
self.assertEqual(2, span.events[0].dropped_attributes)
18411851
self.assertEqual(2, span.links[0].attributes.dropped)
18421852

18431853
def _test_span_limits(

0 commit comments

Comments
 (0)