Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
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
134 changes: 0 additions & 134 deletions ddtrace/_hooks.py

This file was deleted.

22 changes: 0 additions & 22 deletions ddtrace/contrib/falcon.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,6 @@
To disable distributed tracing when using autopatching, set the
``DD_FALCON_DISTRIBUTED_TRACING`` environment variable to ``False``.

**Supported span hooks**

The following is a list of available tracer hooks that can be used to intercept
and modify spans created by this integration.

- ``request``
- Called before the response has been finished
- ``def on_falcon_request(span, request, response)``


Example::

import ddtrace.auto
import falcon
from ddtrace import config

app = falcon.API()

@config.falcon.hooks.on('request')
def on_falcon_request(span, request, response):
span.set_tag('my.custom', 'tag')

:ref:`Headers tracing <http-headers-tracing>` is supported for this integration.
"""

Expand Down
4 changes: 0 additions & 4 deletions ddtrace/contrib/internal/falcon/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,6 @@ def process_response(self, req, resp, resource, req_succeeded=None):

route = req.root_path or "" + req.uri_template

# Emit span hook for this response
# DEV: Emit before closing so they can overwrite `span.resource` if they want
config.falcon.hooks.emit("request", span, req, resp)

core.dispatch(
"web.request.finish", (span, config.falcon, None, None, status, None, None, resp._headers, route, True)
)
Expand Down
44 changes: 42 additions & 2 deletions ddtrace/internal/settings/integration.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import os
from typing import Optional # noqa:F401

from ddtrace._hooks import Hooks
from ddtrace.internal.utils.attrdict import AttrDict
from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning
from ddtrace.vendor.debtcollector import deprecate

from .http import HttpConfig

Expand Down Expand Up @@ -36,8 +37,8 @@ def __init__(self, global_config, name, *args, **kwargs):
# DEV: By-pass the `__setattr__` overrides from `AttrDict` to set real properties
object.__setattr__(self, "global_config", global_config)
object.__setattr__(self, "integration_name", name)
object.__setattr__(self, "hooks", Hooks())
object.__setattr__(self, "http", HttpConfig())
object.__setattr__(self, "hooks", Hooks())

# Trace Analytics was removed in v3.0.0
# TODO(munir): Remove all references to analytics_enabled and analytics_sample_rate
Expand Down Expand Up @@ -115,3 +116,42 @@ def copy(self):
new_instance = self.__class__(self.global_config, self.integration_name)
new_instance.update(self)
return new_instance


class Hooks:
"""Deprecated no-op Hooks class for backwards compatibility."""

def register(self, hook, func=None):
deprecate(
"Hooks.register() is deprecated and is currently a no-op.",
message="To interact with spans, use get_current_span() or get_current_root_span().",
removal_version="5.0.0",
category=DDTraceDeprecationWarning,
)
if not func:
# Return a no-op decorator
def wrapper(func):
return func

return wrapper
return None

def on(self, hook, func=None):
return self.register(hook, func)

def deregister(self, hook, func):
deprecate(
"Hooks.deregister() is deprecated and is currently a no-op.",
removal_version="5.0.0",
category=DDTraceDeprecationWarning,
)
pass

def emit(self, hook, *args, **kwargs):
deprecate(
"Hooks.emit() is deprecated",
message="Use tracer.current_span() or TraceFilters to retrieve and/or modify spans",
removal_version="5.0.0",
category=DDTraceDeprecationWarning,
)
pass
21 changes: 0 additions & 21 deletions tests/contrib/falcon/test_suite.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,27 +224,6 @@ def test_404_exception_no_stacktracer(self):
assert span.get_tag("component") == "falcon"
assert span.get_tag("span.kind") == "server"

def test_falcon_request_hook(self):
@config.falcon.hooks.on("request")
def on_falcon_request(span, request, response):
span.set_tag("my.custom", "tag")

out = self.make_test_call("/200", expected_status_code=200)
assert out.content.decode("utf-8") == "Success"

traces = self.tracer.pop_traces()
assert len(traces) == 1
assert len(traces[0]) == 1
span = traces[0][0]
assert span.get_tag("http.request.headers.my_header") is None
assert span.get_tag("http.response.headers.my_response_header") is None

assert span.name == "falcon.request"

assert span.get_tag("my.custom") == "tag"

assert span.error == 0

def test_http_header_tracing(self):
with self.override_config("falcon", {}):
config.falcon.http.trace_headers(["my-header", "my-response-header"])
Expand Down
1 change: 0 additions & 1 deletion tests/suitespec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ components:
telemetry:
- ddtrace/internal/telemetry/*
tracing:
- ddtrace/_hooks.py
- ddtrace/_logger.py
- ddtrace/_monkey.py
- ddtrace/_trace/*
Expand Down
Loading
Loading