Skip to content

Commit b173c05

Browse files
committedMar 14, 2023
add conditional based on package_version
1 parent 19f4c3c commit b173c05

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed
 

‎instrumentation/opentelemetry-instrumentation-flask/pyproject.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ instruments = [
3838
]
3939
test = [
4040
"opentelemetry-instrumentation-flask[instruments]",
41-
"markupsafe==2.0.1",
41+
"flask == 2.2.3",
42+
"markupsafe==2.1.1",
4243
"opentelemetry-test-utils == 0.38b0.dev",
4344
]
4445

‎instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ def response_hook(span: Span, status: str, response_headers: List):
239239
---
240240
"""
241241
from logging import getLogger
242+
from packaging import version as package_version
242243
from time import time_ns
243244
from timeit import default_timer
244245
from typing import Collection
@@ -269,6 +270,13 @@ def response_hook(span: Span, status: str, response_headers: List):
269270

270271
_excluded_urls_from_env = get_excluded_urls("FLASK")
271272

273+
if package_version.parse(flask.__version__) >= package_version.parse("2.2.0"):
274+
def _request_ctx_id() -> int:
275+
# return id(flask.globals.request_ctx)
276+
return id(flask.globals.request_ctx._get_current_object())
277+
else:
278+
def _request_ctx_id() -> int:
279+
return id(flask._request_ctx_stack.top)
272280

273281
def get_default_span_name():
274282
try:
@@ -398,7 +406,7 @@ def _before_request():
398406
activation = trace.use_span(span, end_on_exit=True)
399407
activation.__enter__() # pylint: disable=E1101
400408
flask_request_environ[_ENVIRON_ACTIVATION_KEY] = activation
401-
flask_request_environ[_ENVIRON_REQCTX_ID_KEY] = id(flask._request_ctx_stack.top)
409+
flask_request_environ[_ENVIRON_REQCTX_ID_KEY] = _request_ctx_id()
402410
flask_request_environ[_ENVIRON_SPAN_KEY] = span
403411
flask_request_environ[_ENVIRON_TOKEN] = token
404412

@@ -440,7 +448,7 @@ def _teardown_request(exc):
440448
activation = flask.request.environ.get(_ENVIRON_ACTIVATION_KEY)
441449

442450
original_reqctx_id = flask.request.environ.get(_ENVIRON_REQCTX_ID_KEY)
443-
current_reqctx_id = id(flask._request_ctx_stack.top)
451+
current_reqctx_id = _request_ctx_id()
444452
if not activation or original_reqctx_id != current_reqctx_id:
445453
# This request didn't start a span, maybe because it was created in
446454
# a way that doesn't run `before_request`, like when it is created

0 commit comments

Comments
 (0)