Skip to content

Commit 00bf613

Browse files
committed
Revert changes to getting route
1 parent 1bc4146 commit 00bf613

File tree

1 file changed

+35
-16
lines changed
  • instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware

1 file changed

+35
-16
lines changed

instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware/otel_middleware.py

+35-16
Original file line numberDiff line numberDiff line change
@@ -168,23 +168,23 @@ class _DjangoMiddleware(MiddlewareMixin):
168168
)
169169

170170
@staticmethod
171-
def _get_span_name_and_route(request):
172-
span_name = request.method
173-
route = None
171+
def _get_span_name(request):
174172
try:
175173
if getattr(request, "resolver_match"):
176174
match = request.resolver_match
177175
else:
178176
match = resolve(request.path)
179177

180-
if route := getattr(match, "route", None):
181-
span_name += f" {route}"
182-
elif url_name := getattr(match, "url_name", None):
183-
span_name += f" {url_name}"
184-
except Resolver404:
185-
pass
178+
if hasattr(match, "route") and match.route:
179+
return f"{request.method} {match.route}"
180+
181+
if hasattr(match, "url_name") and match.url_name:
182+
return f"{request.method} {match.url_name}"
186183

187-
return span_name, route
184+
return request.method
185+
186+
except Resolver404:
187+
return request.method
188188

189189
# pylint: disable=too-many-locals
190190
# pylint: disable=too-many-branches
@@ -214,12 +214,9 @@ def process_request(self, request):
214214
collect_request_attributes = wsgi_collect_request_attributes
215215

216216
attributes = collect_request_attributes(carrier)
217-
span_name, route = self._get_span_name_and_route(request)
218-
if route:
219-
attributes[SpanAttributes.HTTP_ROUTE] = route
220217
span, token = _start_internal_or_server_span(
221218
tracer=self._tracer,
222-
span_name=span_name,
219+
span_name=self._get_span_name(request),
223220
start_time=request_meta.get(
224221
"opentelemetry-instrumentor-django.starttime_key"
225222
),
@@ -232,8 +229,6 @@ def process_request(self, request):
232229
attributes
233230
)
234231
duration_attrs = _parse_duration_attrs(attributes)
235-
if route:
236-
duration_attrs[SpanAttributes.HTTP_TARGET] = route
237232

238233
request.META[self._environ_active_request_attr_key] = (
239234
active_requests_count_attrs
@@ -301,6 +296,30 @@ def process_request(self, request):
301296
# would not be called. Log the exception instead.
302297
_logger.exception("Exception raised by request_hook")
303298

299+
# pylint: disable=unused-argument
300+
def process_view(self, request, view_func, *args, **kwargs):
301+
# Process view is executed before the view function, here we get the
302+
# route template from request.resolver_match. It is not set yet in process_request
303+
if self._excluded_urls.url_disabled(request.build_absolute_uri("?")):
304+
return
305+
306+
if (
307+
self._environ_activation_key in request.META.keys()
308+
and self._environ_span_key in request.META.keys()
309+
):
310+
span = request.META[self._environ_span_key]
311+
312+
if span.is_recording():
313+
match = getattr(request, "resolver_match", None)
314+
if match:
315+
route = getattr(match, "route", None)
316+
if route:
317+
span.set_attribute(SpanAttributes.HTTP_ROUTE, route)
318+
duration_attrs = request.META[
319+
self._environ_duration_attr_key
320+
]
321+
duration_attrs[SpanAttributes.HTTP_TARGET] = route
322+
304323
def process_exception(self, request, exception):
305324
if self._excluded_urls.url_disabled(request.build_absolute_uri("?")):
306325
return

0 commit comments

Comments
 (0)