Skip to content

feat(data-export): Improve observability for failure emails#116917

Open
sentry[bot] wants to merge 3 commits into
masterfrom
seer/feat/data-export-failure-email-logging
Open

feat(data-export): Improve observability for failure emails#116917
sentry[bot] wants to merge 3 commits into
masterfrom
seer/feat/data-export-failure-email-logging

Conversation

@sentry

@sentry sentry Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

This PR enhances the observability of data export failure emails by adding explicit logging at key stages of the email_failure method in sentry/data_export/models.py.

Previously, if a data export failed and the subsequent failure email was not dispatched (e.g., due to a missing user ID, no associated email, or issues within the notification service itself), there was no clear log indicating why the email was not sent or if it was attempted at all. This made debugging user reports of not receiving failure notifications challenging.

Changes include:

  • Added logger.warning statements for early exits in email_failure when user_id is None or user.email is not found. This provides visibility into cases where an email cannot be sent due to missing user information.
  • Introduced a data-export-failure.mail.sent logger.info statement after both the NotificationService.notify_async and MessageBuilder.send_async paths. This log confirms that an attempt to send the failure email was made and indicates which notification mechanism was used via a via tag.

These changes will provide clearer telemetry for data export failure notifications, making it easier to diagnose why users might not be receiving them.

Legal Boilerplate

Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. and is gonna need some rights from me in order to utilize my contributions in this here PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.

@sentry sentry Bot requested a review from a team as a code owner June 4, 2026 21:36
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label Jun 4, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a258869. Configure here.

Comment thread src/sentry/data_export/models.py
Comment thread src/sentry/data_export/models.py
JoshuaKGoldberg and others added 2 commits June 5, 2026 13:28
Rename misleading mail.sent log to mail.attempted since neither
notify_async (killswitch) nor send_async (safe_execute) guarantees the
mail was queued, and log user_id instead of user.email to avoid
persisting PII to durable log storage.
@JoshuaKGoldberg

Copy link
Copy Markdown
Member

Context: I directed Sentry to make this to help investigate other data export failures.

@JoshuaKGoldberg JoshuaKGoldberg added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Jun 5, 2026
@getsantry

getsantry Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

This pull request has gone three weeks without activity. In another week, I will close it.

But! If you comment or otherwise update it, I will reset the clock, and if you add the label WIP, I will leave it alone unless WIP is removed ... forever!


"A weed is but an unloved flower." ― Ella Wheeler Wilcox 🥀

@getsantry getsantry Bot added the Stale label Jun 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components Stale Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants