Skip to content

Commit fe4bcc6

Browse files
authored
ref(sdk): Add more checks to send_envelope (#26182)
Almost there. Worker.submit rate and the send_envelope rate match the captured envelopes, but again 'sent_request' drops. There are only a few lines of code between these functions, check_disabled doesn't appear to be getting called, and there are a couple file operations which might be throwing exceptions, so wrapped those in metrics as well.
1 parent b3810a9 commit fe4bcc6

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

src/sentry/utils/sdk.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,15 @@ def patched_worker_submit(*args, **kwargs):
229229

230230
def patched_send_envelope(*args, **kwargs):
231231
metrics.incr(f"internal.send_envelope.{transport_name}.events")
232-
return _send_envelope(*args, **kwargs)
232+
try:
233+
result = _send_envelope(*args, **kwargs)
234+
metrics.incr(f"internal.send_envelope.{transport_name}.sent.events")
235+
return result
236+
except Exception as error:
237+
error_name = type(error).__name__
238+
metrics.incr(
239+
f"internal.send_envelope.{transport_name}.error", tags={"error": error_name}
240+
)
233241

234242
transport._send_envelope = patched_send_envelope
235243

@@ -264,17 +272,20 @@ def patched_update_rate_limits(*args, **kwargs):
264272
_check_disabled = transport._check_disabled
265273
if _check_disabled:
266274

275+
def check_disabled_bucket(bucket):
276+
ts = transport._disabled_until.get(bucket)
277+
278+
# Confirm the transaction bucket is disabled
279+
if ts is not None and ts > datetime.utcnow():
280+
metrics.incr(f"internal.check_disabled.{transport_name}.bucket.{bucket}.disabled")
281+
267282
def patched_check_disabled(*args, **kwargs):
268283
result = _check_disabled(*args, **kwargs)
284+
metrics.incr(f"internal.check_disabled.{transport_name}.events.count")
269285
if result:
270-
if getattr(transport, "_disabled_until", None):
271-
ts = transport._disabled_until.get("transaction")
272286

273-
# Confirm the transaction bucket is disabled
274-
if ts is not None and ts > datetime.utcnow():
275-
metrics.incr(
276-
f"internal.check_disabled.{transport_name}.events.transactions_disabled"
277-
)
287+
if getattr(transport, "_disabled_until", None):
288+
check_disabled_bucket("transaction")
278289

279290
metrics.incr(f"internal.check_disabled.{transport_name}.events.is_disabled")
280291
return result

0 commit comments

Comments
 (0)