File tree Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Load Diff This file was deleted.
Original file line number Diff line number Diff line change 22import re
33from typing import Dict , Optional
44
5+ from lumigo_core .logger import get_logger
6+
57TRACEPARENT_HEADER_NAME = "traceparent"
68TRACESTATE_HEADER_NAME = "tracestate"
79# The regex was copied from:
1012 "^[ \t ]*([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})" + "(-.*)?[ \t ]*$"
1113)
1214TRACEPARENT_HEADER_FORMAT_RE = re .compile (TRACEPARENT_HEADER_FORMAT )
15+ SKIP_INJECT_HEADERS = ["x-amz-content-sha256" ]
1316
1417
1518def generate_message_id () -> str :
1619 return "%016x" % random .getrandbits (64 )
1720
1821
22+ def should_skip_trace_propagation (headers : Dict [str , str ]) -> bool :
23+ return any (key .lower () in SKIP_INJECT_HEADERS for key in headers )
24+
25+
1926def add_w3c_trace_propagator (headers : Dict [str , str ], transaction_id : str ) -> None :
27+ if should_skip_trace_propagation (headers ):
28+ get_logger ().debug ("Skipping trace propagation" )
29+ return
2030 message_id = generate_message_id ()
2131 headers [TRACEPARENT_HEADER_NAME ] = get_trace_id (headers , transaction_id , message_id )
2232 headers [TRACESTATE_HEADER_NAME ] = get_trace_state (headers , message_id )
Original file line number Diff line number Diff line change 66 add_w3c_trace_propagator ,
77 get_w3c_message_id ,
88 is_w3c_headers ,
9+ should_skip_trace_propagation ,
910)
1011
1112
@@ -78,3 +79,23 @@ def test_get_w3c_message_id(headers, expected):
7879)
7980def test_is_w3c_headers (headers , expected ):
8081 assert is_w3c_headers (headers ) == expected
82+
83+
84+ @pytest .mark .parametrize (
85+ "headers, expected" ,
86+ [
87+ ({}, False ),
88+ ({"another" : "header" }, False ),
89+ ({"x-amz-content-sha256" : "123" }, True ),
90+ ({"X-amz-content-SHA256" : "123" }, True ),
91+ ],
92+ )
93+ def test_should_skip_trace_propagation (headers , expected ):
94+ assert should_skip_trace_propagation (headers ) == expected
95+
96+
97+ def test_dont_add_header_for_skipped_context ():
98+ headers = {"x-amz-content-sha256" : "123" }
99+ add_w3c_trace_propagator (headers , "111111111111112222222222" )
100+
101+ assert headers == {"x-amz-content-sha256" : "123" }
You can’t perform that action at this time.
0 commit comments