File tree 3 files changed +29
-4
lines changed
instrumentation/opentelemetry-instrumentation-confluent-kafka
src/opentelemetry/instrumentation/confluent_kafka
3 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
17
17
- Fix Flask instrumentation to only close the span if it was created by the same thread.
18
18
([ #1654 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1654 ) )
19
+ - Fix confluent-kafka instrumentation by allowing Producer headers to be dict or list
20
+ ([ #1655 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1655 ) )
19
21
20
22
## Version 1.16.0/0.37b0 (2023-02-17)
21
23
@@ -61,8 +63,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
61
63
([ #1512 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1512 ) )
62
64
- Add commit method for ConfluentKafkaInstrumentor's ProxiedConsumer
63
65
([ #1656 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1656 ) )
64
- - Fix confluent-kafka instrumentation by allowing Producer headers to be dict or list
65
- ([ #1655 ] ( https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1655 ) )
66
66
67
67
## Version 1.15.0/0.36b0 (2022-12-10)
68
68
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