File tree 3 files changed +34
-4
lines changed
instrumentation/opentelemetry-instrumentation-confluent-kafka
src/opentelemetry/instrumentation/confluent_kafka
3 files changed +34
-4
lines changed Original file line number Diff line number Diff line change @@ -7,9 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## Unreleased
9
9
10
+ ### Added
11
+
10
12
- Add connection attributes to sqlalchemy connect span
11
13
([ #1608 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1608 ) )
12
14
15
+ ### Fixed
16
+
17
+ - Fix confluent-kafka instrumentation by allowing Producer headers to be dict or list
18
+ ([ #1655 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1655 ) )
19
+
13
20
## Version 1.16.0/0.37b0 (2023-02-17)
14
21
15
22
### Added
@@ -54,8 +61,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
54
61
([ #1512 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1512 ) )
55
62
- Add commit method for ConfluentKafkaInstrumentor's ProxiedConsumer
56
63
([ #1656 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1656 ) )
57
- - Fix confluent-kafka instrumentation by allowing Producer headers to be dict or list
58
- ([ #1655 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1655 ) )
59
64
60
65
## Version 1.15.0/0.36b0 (2022-12-10)
61
66
Original file line number Diff line number Diff line change @@ -41,16 +41,26 @@ class KafkaContextGetter(textmap.Getter):
41
41
def get (self , carrier : textmap .CarrierT , key : str ) -> Optional [List [str ]]:
42
42
if carrier is None :
43
43
return None
44
- for item_key , value in carrier :
44
+
45
+ carrier_items = carrier
46
+ if isinstance (carrier , dict ):
47
+ carrier_items = carrier .items ()
48
+
49
+ for item_key , value in carrier_items :
45
50
if item_key == key :
46
51
if value is not None :
47
52
return [value .decode ()]
53
+
48
54
return None
49
55
50
56
def keys (self , carrier : textmap .CarrierT ) -> List [str ]:
51
57
if carrier is None :
52
58
return []
53
- return [key for (key , value ) in carrier ]
59
+
60
+ carrier_items = carrier
61
+ if isinstance (carrier , dict ):
62
+ carrier_items = carrier .items ()
63
+ return [key for (key , value ) in carrier_items ]
54
64
55
65
56
66
class KafkaContextSetter (textmap .Setter ):
Original file line number Diff line number Diff line change 24
24
ProxiedProducer ,
25
25
)
26
26
from opentelemetry .instrumentation .confluent_kafka .utils import (
27
+ KafkaContextGetter ,
27
28
KafkaContextSetter ,
28
29
)
29
30
@@ -89,3 +90,17 @@ def test_context_setter(self) -> None:
89
90
carrier_list = [("key1" , "val1" )]
90
91
context_setter .set (carrier_list , "key2" , "val2" )
91
92
self .assertTrue (("key2" , "val2" .encode ()) in carrier_list )
93
+
94
+ def test_context_getter (self ) -> None :
95
+ context_setter = KafkaContextSetter ()
96
+ context_getter = KafkaContextGetter ()
97
+
98
+ carrier_dict = {}
99
+ context_setter .set (carrier_dict , "key1" , "val1" )
100
+ self .assertEqual (context_getter .get (carrier_dict , "key1" ), ["val1" ])
101
+ self .assertEqual (["key1" ], context_getter .keys (carrier_dict ))
102
+
103
+ carrier_list = []
104
+ context_setter .set (carrier_list , "key1" , "val1" )
105
+ self .assertEqual (context_getter .get (carrier_list , "key1" ), ["val1" ])
106
+ self .assertEqual (["key1" ], context_getter .keys (carrier_list ))
You can’t perform that action at this time.
0 commit comments