@@ -263,6 +263,9 @@ def response_hook(span: Span, status: str, response_headers: List):
263
263
264
264
_logger = getLogger (__name__ )
265
265
266
+ class _TraceContext (typing .NamedTuple ):
267
+ starttime : int
268
+
266
269
_ENVIRON_STARTTIME_KEY = "opentelemetry-flask.starttime_key"
267
270
_ENVIRON_SPAN_KEY = "opentelemetry-flask.span_key"
268
271
_ENVIRON_ACTIVATION_KEY = "opentelemetry-flask.activation_key"
@@ -274,9 +277,16 @@ def response_hook(span: Span, status: str, response_headers: List):
274
277
if package_version .parse (flask .__version__ ) >= package_version .parse ("2.2.0" ):
275
278
def _request_ctx_ref () -> weakref .ReferenceType :
276
279
return weakref .ref (flask .globals .request_ctx ._get_current_object ())
280
+ def _request_ctx () -> RequestContext :
281
+ return flask .globals .request_ctx ._get_current_object ()
277
282
else :
278
283
def _request_ctx_ref () -> int :
279
284
return weakref .ref (flask ._request_ctx_stack .top )
285
+ def _request_ctx () -> RequestContext :
286
+ return flask ._request_ctx_stack .top
287
+
288
+ def _get_reqctx ():
289
+ return flask ._request_ctx_stack .top
280
290
281
291
def get_default_span_name ():
282
292
try :
@@ -405,11 +415,17 @@ def _before_request():
405
415
406
416
activation = trace .use_span (span , end_on_exit = True )
407
417
activation .__enter__ () # pylint: disable=E1101
418
+
419
+ reqctx = _get_reqctx ()
408
420
flask_request_environ [_ENVIRON_ACTIVATION_KEY ] = activation
421
+
409
422
flask_request_environ [_ENVIRON_REQCTX_REF_KEY ] = _request_ctx_ref ()
410
423
flask_request_environ [_ENVIRON_SPAN_KEY ] = span
411
424
flask_request_environ [_ENVIRON_TOKEN ] = token
412
425
426
+ reqctx = _get_reqctx ()
427
+ reqctx ._test_ref = _request_ctx_ref ()
428
+
413
429
if enable_commenter :
414
430
current_context = context .get_current ()
415
431
flask_info = {}
@@ -449,6 +465,9 @@ def _teardown_request(exc):
449
465
450
466
original_reqctx_ref = flask .request .environ .get (_ENVIRON_REQCTX_REF_KEY )
451
467
current_reqctx_ref = _request_ctx_ref ()
468
+ # tear_request FROM the copy_current_Request_context's teardown
469
+ if 'asdf' in flask .g :
470
+ breakpoint ()
452
471
if not activation or original_reqctx_ref != current_reqctx_ref :
453
472
# This request didn't start a span, maybe because it was created in
454
473
# a way that doesn't run `before_request`, like when it is created
0 commit comments