Skip to content

Commit 966cd42

Browse files
ref: override _log_robust_failure instead of send_robust
send_robust got way more complicated in django 5.x to handle async signals
1 parent 8905c06 commit 966cd42

File tree

1 file changed

+7
-27
lines changed

1 file changed

+7
-27
lines changed

src/sentry/signals.py

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from collections.abc import Callable
77
from typing import Any
88

9-
from django.dispatch.dispatcher import NO_RECEIVERS, Signal
9+
from django.dispatch.dispatcher import Signal
1010

1111
from sentry.utils.env import in_test_environment
1212

@@ -79,32 +79,12 @@ def wrapped(func):
7979
wrapped.__doc__ = receiver.__doc__
8080
return wrapped(receiver)
8181

82-
def send_robust(self, sender, **named) -> list[tuple[Receiver, Exception | Any]]:
83-
"""
84-
A reimplementation of send_robust which logs failures, thus recovering stacktraces.
85-
"""
86-
responses: list[tuple[Receiver, Exception | Any]] = []
87-
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
88-
return responses
89-
90-
# Call each receiver with whatever arguments it can accept.
91-
# Return a list of tuple pairs [(receiver, response), ... ].
92-
for receiver in self._live_receivers(sender):
93-
try:
94-
response = receiver(signal=self, sender=sender, **named)
95-
except Exception as err:
96-
if in_test_environment():
97-
if (
98-
_receivers_that_raise is _AllReceivers.ALL
99-
or receiver in _receivers_that_raise
100-
):
101-
raise
102-
103-
logging.exception("signal.failure", extra={"receiver": repr(receiver)})
104-
responses.append((receiver, err))
105-
else:
106-
responses.append((receiver, response))
107-
return responses
82+
def _log_robust_failure(self, receiver: object, err: Exception) -> None:
83+
if in_test_environment():
84+
if _receivers_that_raise is _AllReceivers.ALL or receiver in _receivers_that_raise:
85+
raise
86+
87+
logging.error("signal.failure", extra={"receiver": repr(receiver)}, exc_info=err)
10888

10989

11090
buffer_incr_complete = BetterSignal() # ["model", "columns", "extra", "result"]

0 commit comments

Comments
 (0)