-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
ref(analytics): Transform analytics events for TET-836 #95215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- Transform event classes to use @analytics.eventclass decorator - Transform analytics.record calls to use event class instances - Update imports as needed Closes TET-836
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Type Mismatch in Event Class Annotations
Type annotations in analytics.Event
classes are incorrect. ID fields (e.g., project_id
, organization_id
, group_id
, issue_id
, rule_id
) are typed as str
but receive integer values from model IDs. Additionally, fields like had_to_deassign
and has_minified_stack_trace
are annotated as str | None
but receive boolean values. These type mismatches could cause runtime errors.
src/sentry/analytics/events/issue_auto_resolved.py#L5-L10
sentry/src/sentry/analytics/events/issue_auto_resolved.py
Lines 5 to 10 in 123cadb
class IssueAutoResolvedEvent(analytics.Event): | |
project_id: str | None = None | |
organization_id: str | |
group_id: str | |
issue_category: str | None = None | |
issue_type: str | None = None |
src/sentry/analytics/events/first_event_sent.py#L6-L13
sentry/src/sentry/analytics/events/first_event_sent.py
Lines 6 to 13 in 123cadb
class FirstEventSentEvent(analytics.Event): | |
user_id: str | |
organization_id: str | |
project_id: str | |
platform: str | None = None | |
url: str | None = None | |
has_minified_stack_trace: str | None = None | |
project_platform: str | None = None |
src/sentry/analytics/events/issue_alert_fired.py#L5-L9
sentry/src/sentry/analytics/events/issue_alert_fired.py
Lines 5 to 9 in 123cadb
class IssueAlertFiredEvent(analytics.Event): | |
issue_id: str | |
project_id: str | |
organization_id: str | |
rule_id: str |
src/sentry/analytics/events/manual_issue_assignment.py#L5-L10
sentry/src/sentry/analytics/events/manual_issue_assignment.py
Lines 5 to 10 in 123cadb
class ManualIssueAssignment(analytics.Event): | |
organization_id: str | |
project_id: str | |
group_id: str | |
assigned_by: str | None = None | |
had_to_deassign: str | None = None |
src/sentry/rules/processing/processor.py#L393-L399
sentry/src/sentry/rules/processing/processor.py
Lines 393 to 399 in 123cadb
analytics.record( | |
IssueAlertFiredEvent( | |
issue_id=self.group.id, | |
project_id=rule.project.id, | |
organization_id=rule.project.organization.id, | |
rule_id=rule.id, | |
) |
src/sentry/tasks/auto_resolve_issues.py#L141-L148
sentry/src/sentry/tasks/auto_resolve_issues.py
Lines 141 to 148 in 123cadb
analytics.record( | |
IssueAutoResolvedEvent( | |
project_id=project.id, | |
organization_id=project.organization_id, | |
group_id=group.id, | |
issue_type=group.issue_type.slug, | |
issue_category=group.issue_category.name.lower(), | |
) |
src/sentry/api/helpers/group_index/update.py#L1035-L1042
sentry/src/sentry/api/helpers/group_index/update.py
Lines 1035 to 1042 in 123cadb
analytics.record( | |
ManualIssueAssignment( | |
organization_id=project_lookup[group.project_id].organization_id, | |
project_id=group.project_id, | |
group_id=group.id, | |
assigned_by=assigned_by, | |
had_to_deassign=assignment["updated_assignment"], | |
) |
src/sentry/api/helpers/group_index/update.py#L1048-L1055
sentry/src/sentry/api/helpers/group_index/update.py
Lines 1048 to 1055 in 123cadb
analytics.record( | |
ManualIssueAssignment( | |
organization_id=project_lookup[group.project_id].organization_id, | |
project_id=group.project_id, | |
group_id=group.id, | |
assigned_by=assigned_by, | |
had_to_deassign=True, | |
) |
Bug: Analytics Event Type Mismatch
The subclasses FirstEventSentEventForProject
and FirstEventSentEventWithMinifiedStackTraceForProject
inconsistently use the old type
attribute, while their parent FirstEventSentEvent
was updated to use the @analytics.eventclass
decorator. Additionally, the has_minified_stack_trace
attribute is type-hinted as str | None
but receives a boolean value. These issues could lead to unexpected behavior in the analytics system.
src/sentry/analytics/events/first_event_sent.py#L11-L23
sentry/src/sentry/analytics/events/first_event_sent.py
Lines 11 to 23 in 123cadb
url: str | None = None | |
has_minified_stack_trace: str | None = None | |
project_platform: str | None = None | |
# first error for a project | |
class FirstEventSentEventForProject(FirstEventSentEvent): | |
type = "first_event_for_project.sent" | |
# first error with minified stack trace for a project | |
class FirstEventSentEventWithMinifiedStackTraceForProject(FirstEventSentEvent): | |
type = "first_event_with_minified_stack_trace_for_project.sent" |
Bug: Incorrect Type for `had_to_deassign` Field
The had_to_deassign
field in ManualIssueAssignment
is incorrectly typed as str | None
. It should be bool | None
as boolean values (e.g., assignment["updated_assignment"]
, True
) are passed to it from src/sentry/api/helpers/group_index/update.py
. This type mismatch could lead to runtime errors.
src/sentry/analytics/events/manual_issue_assignment.py#L9-L10
sentry/src/sentry/analytics/events/manual_issue_assignment.py
Lines 9 to 10 in 123cadb
assigned_by: str | None = None | |
had_to_deassign: str | None = None |
Bug: Type Mismatch in Analytics Event Fields
Type annotations for analytics event fields are incorrect: ID fields (issue_id
, project_id
, organization_id
, group_id
, rule_id
) are typed as str
but receive integer values. Additionally, the had_to_deassign
field is annotated as str | None
but receives boolean values. This results in type mismatches between declared and actual parameter types.
src/sentry/analytics/events/issue_alert_fired.py#L5-L9
sentry/src/sentry/analytics/events/issue_alert_fired.py
Lines 5 to 9 in 123cadb
class IssueAlertFiredEvent(analytics.Event): | |
issue_id: str | |
project_id: str | |
organization_id: str | |
rule_id: str |
src/sentry/analytics/events/manual_issue_assignment.py#L5-L10
sentry/src/sentry/analytics/events/manual_issue_assignment.py
Lines 5 to 10 in 123cadb
class ManualIssueAssignment(analytics.Event): | |
organization_id: str | |
project_id: str | |
group_id: str | |
assigned_by: str | None = None | |
had_to_deassign: str | None = None |
Was this report helpful? Give feedback by reacting with 👍 or 👎
❌ 16 Tests Failed:
View the top 3 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Closes TET-836