Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use request_ctx to determine whether or not _teardown_request should end flask span #1692

Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
d11ff88
Use `id(flask.request)` instead of `thread.get_ident()`
matthewgrossman Feb 24, 2023
fb9161d
use reqctx instead?
matthewgrossman Feb 24, 2023
45198d7
try request ctx stack
matthewgrossman Mar 14, 2023
19f4c3c
get a functional test
matthewgrossman Mar 14, 2023
b173c05
add conditional based on package_version
matthewgrossman Mar 14, 2023
df2085d
loosen constraints
matthewgrossman Mar 14, 2023
fe1bd89
weakref, not id()
matthewgrossman Mar 14, 2023
6f7835a
lets pivot
matthewgrossman Mar 14, 2023
4bcc1df
clean up
matthewgrossman Mar 14, 2023
8e6905a
weakref version, attempting other branch now
matthewgrossman Mar 14, 2023
8d5a391
fix comment
matthewgrossman Apr 7, 2023
6b06283
fix type
matthewgrossman Apr 7, 2023
d82185e
fix comment
matthewgrossman Apr 7, 2023
282da72
add packaging to requirements
matthewgrossman Apr 7, 2023
3e1711c
Merge branch 'main' into mg-use-request-id-instead-of-thread-id
matthewgrossman Apr 7, 2023
1b8ab68
Add to tox.ini
matthewgrossman Apr 7, 2023
41a2eb7
push up again
matthewgrossman Apr 7, 2023
d599ac5
loosen dev requirements
matthewgrossman Apr 7, 2023
e573fea
Add to changelog
matthewgrossman Apr 7, 2023
7be29f3
lint
matthewgrossman Apr 7, 2023
1579401
Merge branch 'main' into mg-use-request-id-instead-of-thread-id
shalevr Apr 19, 2023
774c34c
Merge branch 'main' into mg-use-request-id-instead-of-thread-id
matthewgrossman May 24, 2023
7fdf90c
Merge branch 'mg-use-request-id-instead-of-thread-id' of github.com:m…
matthewgrossman May 24, 2023
72136d6
format
matthewgrossman May 24, 2023
103871b
format
matthewgrossman May 24, 2023
10b49de
isort
matthewgrossman May 24, 2023
76934fa
fix
matthewgrossman May 24, 2023
d5da755
fix markupsafe
matthewgrossman May 24, 2023
356cf20
black
matthewgrossman May 25, 2023
3098165
black
matthewgrossman May 25, 2023
5aa045c
Merge branch 'main' into mg-use-request-id-instead-of-thread-id
ocelotl Jun 13, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add conditional based on package_version
  • Loading branch information
matthewgrossman committed Mar 14, 2023
commit b173c05f072d6d1b7076d0bc7f60b7d25d4cc311
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ instruments = [
]
test = [
"opentelemetry-instrumentation-flask[instruments]",
"markupsafe==2.0.1",
"flask == 2.2.3",
"markupsafe==2.1.1",
"opentelemetry-test-utils == 0.38b0.dev",
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ def response_hook(span: Span, status: str, response_headers: List):
---
"""
from logging import getLogger
from packaging import version as package_version
from time import time_ns
from timeit import default_timer
from typing import Collection
Expand Down Expand Up @@ -269,6 +270,13 @@ def response_hook(span: Span, status: str, response_headers: List):

_excluded_urls_from_env = get_excluded_urls("FLASK")

if package_version.parse(flask.__version__) >= package_version.parse("2.2.0"):
matthewgrossman marked this conversation as resolved.
Show resolved Hide resolved
def _request_ctx_id() -> int:
# return id(flask.globals.request_ctx)
return id(flask.globals.request_ctx._get_current_object())
else:
def _request_ctx_id() -> int:
return id(flask._request_ctx_stack.top)

def get_default_span_name():
try:
Expand Down Expand Up @@ -398,7 +406,7 @@ def _before_request():
activation = trace.use_span(span, end_on_exit=True)
activation.__enter__() # pylint: disable=E1101
flask_request_environ[_ENVIRON_ACTIVATION_KEY] = activation
flask_request_environ[_ENVIRON_REQCTX_ID_KEY] = id(flask._request_ctx_stack.top)
flask_request_environ[_ENVIRON_REQCTX_ID_KEY] = _request_ctx_id()
flask_request_environ[_ENVIRON_SPAN_KEY] = span
flask_request_environ[_ENVIRON_TOKEN] = token

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

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