|
@@ -11,7 +11,6 @@ import sentry_sdk
|
|
from sentry import features
|
|
from sentry import features
|
|
from sentry.features.base import OrganizationFeature
|
|
from sentry.features.base import OrganizationFeature
|
|
from sentry.ratelimits.sliding_windows import Quota
|
|
from sentry.ratelimits.sliding_windows import Quota
|
|
-from sentry.types.group import PriorityLevel
|
|
|
|
from sentry.utils import metrics
|
|
from sentry.utils import metrics
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
if TYPE_CHECKING:
|
|
@@ -117,7 +116,6 @@ class GroupType:
|
|
description: str
|
|
description: str
|
|
category: int
|
|
category: int
|
|
noise_config: NoiseConfig | None = None
|
|
noise_config: NoiseConfig | None = None
|
|
- default_priority: int = PriorityLevel.MEDIUM
|
|
|
|
# If True this group type should be released everywhere. If False, fall back to features to
|
|
# If True this group type should be released everywhere. If False, fall back to features to
|
|
# decide if this is released.
|
|
# decide if this is released.
|
|
released: bool = False
|
|
released: bool = False
|
|
@@ -219,7 +217,6 @@ class ErrorGroupType(GroupType):
|
|
slug = "error"
|
|
slug = "error"
|
|
description = "Error"
|
|
description = "Error"
|
|
category = GroupCategory.ERROR.value
|
|
category = GroupCategory.ERROR.value
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -235,7 +232,6 @@ class PerformanceSlowDBQueryGroupType(PerformanceGroupTypeDefaults, GroupType):
|
|
description = "Slow DB Query"
|
|
description = "Slow DB Query"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
noise_config = NoiseConfig(ignore_limit=100)
|
|
noise_config = NoiseConfig(ignore_limit=100)
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -245,7 +241,6 @@ class PerformanceRenderBlockingAssetSpanGroupType(PerformanceGroupTypeDefaults,
|
|
slug = "performance_render_blocking_asset_span"
|
|
slug = "performance_render_blocking_asset_span"
|
|
description = "Large Render Blocking Asset"
|
|
description = "Large Render Blocking Asset"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -255,7 +250,6 @@ class PerformanceNPlusOneGroupType(PerformanceGroupTypeDefaults, GroupType):
|
|
slug = "performance_n_plus_one_db_queries"
|
|
slug = "performance_n_plus_one_db_queries"
|
|
description = "N+1 Query"
|
|
description = "N+1 Query"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -266,7 +260,6 @@ class PerformanceConsecutiveDBQueriesGroupType(PerformanceGroupTypeDefaults, Gro
|
|
description = "Consecutive DB Queries"
|
|
description = "Consecutive DB Queries"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
noise_config = NoiseConfig(ignore_limit=15)
|
|
noise_config = NoiseConfig(ignore_limit=15)
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -276,7 +269,6 @@ class PerformanceFileIOMainThreadGroupType(PerformanceGroupTypeDefaults, GroupTy
|
|
slug = "performance_file_io_main_thread"
|
|
slug = "performance_file_io_main_thread"
|
|
description = "File IO on Main Thread"
|
|
description = "File IO on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -287,7 +279,6 @@ class PerformanceConsecutiveHTTPQueriesGroupType(PerformanceGroupTypeDefaults, G
|
|
description = "Consecutive HTTP"
|
|
description = "Consecutive HTTP"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
noise_config = NoiseConfig(ignore_limit=5)
|
|
noise_config = NoiseConfig(ignore_limit=5)
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -297,7 +288,6 @@ class PerformanceNPlusOneAPICallsGroupType(GroupType):
|
|
slug = "performance_n_plus_one_api_calls"
|
|
slug = "performance_n_plus_one_api_calls"
|
|
description = "N+1 API Call"
|
|
description = "N+1 API Call"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -307,7 +297,6 @@ class PerformanceMNPlusOneDBQueriesGroupType(PerformanceGroupTypeDefaults, Group
|
|
slug = "performance_m_n_plus_one_db_queries"
|
|
slug = "performance_m_n_plus_one_db_queries"
|
|
description = "MN+1 Query"
|
|
description = "MN+1 Query"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -318,7 +307,6 @@ class PerformanceUncompressedAssetsGroupType(PerformanceGroupTypeDefaults, Group
|
|
description = "Uncompressed Asset"
|
|
description = "Uncompressed Asset"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
noise_config = NoiseConfig(ignore_limit=100)
|
|
noise_config = NoiseConfig(ignore_limit=100)
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -328,7 +316,6 @@ class PerformanceDBMainThreadGroupType(PerformanceGroupTypeDefaults, GroupType):
|
|
slug = "performance_db_main_thread"
|
|
slug = "performance_db_main_thread"
|
|
description = "DB on Main Thread"
|
|
description = "DB on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -338,7 +325,6 @@ class PerformanceLargeHTTPPayloadGroupType(PerformanceGroupTypeDefaults, GroupTy
|
|
slug = "performance_large_http_payload"
|
|
slug = "performance_large_http_payload"
|
|
description = "Large HTTP payload"
|
|
description = "Large HTTP payload"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -349,7 +335,6 @@ class PerformanceHTTPOverheadGroupType(PerformanceGroupTypeDefaults, GroupType):
|
|
description = "HTTP/1.1 Overhead"
|
|
description = "HTTP/1.1 Overhead"
|
|
noise_config = NoiseConfig(ignore_limit=20)
|
|
noise_config = NoiseConfig(ignore_limit=20)
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
# experimental
|
|
# experimental
|
|
@@ -361,7 +346,6 @@ class PerformanceDurationRegressionGroupType(GroupType):
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
enable_auto_resolve = False
|
|
enable_auto_resolve = False
|
|
enable_escalation_detection = False
|
|
enable_escalation_detection = False
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -372,7 +356,6 @@ class PerformanceP95EndpointRegressionGroupType(GroupType):
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
enable_auto_resolve = False
|
|
enable_auto_resolve = False
|
|
enable_escalation_detection = False
|
|
enable_escalation_detection = False
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
released = True
|
|
released = True
|
|
|
|
|
|
|
|
|
|
@@ -383,7 +366,6 @@ class ProfileFileIOGroupType(GroupType):
|
|
slug = "profile_file_io_main_thread"
|
|
slug = "profile_file_io_main_thread"
|
|
description = "File I/O on Main Thread"
|
|
description = "File I/O on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -392,7 +374,6 @@ class ProfileImageDecodeGroupType(GroupType):
|
|
slug = "profile_image_decode_main_thread"
|
|
slug = "profile_image_decode_main_thread"
|
|
description = "Image Decoding on Main Thread"
|
|
description = "Image Decoding on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -401,7 +382,6 @@ class ProfileJSONDecodeType(GroupType):
|
|
slug = "profile_json_decode_main_thread"
|
|
slug = "profile_json_decode_main_thread"
|
|
description = "JSON Decoding on Main Thread"
|
|
description = "JSON Decoding on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -410,17 +390,17 @@ class ProfileCoreDataExperimentalType(GroupType):
|
|
slug = "profile_core_data_main_exp"
|
|
slug = "profile_core_data_main_exp"
|
|
description = "Core Data on Main Thread"
|
|
description = "Core Data on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
# 2005 was ProfileRegexExperimentalType
|
|
# 2005 was ProfileRegexExperimentalType
|
|
|
|
+
|
|
|
|
+
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
class ProfileViewIsSlowExperimentalType(GroupType):
|
|
class ProfileViewIsSlowExperimentalType(GroupType):
|
|
type_id = 2006
|
|
type_id = 2006
|
|
slug = "profile_view_is_slow_experimental"
|
|
slug = "profile_view_is_slow_experimental"
|
|
description = "View Render/Layout/Update is slow"
|
|
description = "View Render/Layout/Update is slow"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -430,7 +410,6 @@ class ProfileRegexType(GroupType):
|
|
description = "Regex on Main Thread"
|
|
description = "Regex on Main Thread"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
released = True
|
|
released = True
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -439,7 +418,6 @@ class ProfileFrameDropExperimentalType(GroupType):
|
|
slug = "profile_frame_drop_experimental"
|
|
slug = "profile_frame_drop_experimental"
|
|
description = "Frame Drop"
|
|
description = "Frame Drop"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -450,7 +428,6 @@ class ProfileFrameDropType(GroupType):
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
noise_config = NoiseConfig(ignore_limit=2000)
|
|
noise_config = NoiseConfig(ignore_limit=2000)
|
|
released = True
|
|
released = True
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -460,7 +437,6 @@ class ProfileFunctionRegressionExperimentalType(GroupType):
|
|
description = "Function Duration Regression (Experimental)"
|
|
description = "Function Duration Regression (Experimental)"
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
enable_auto_resolve = False
|
|
enable_auto_resolve = False
|
|
- default_priority = PriorityLevel.LOW
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -471,7 +447,6 @@ class ProfileFunctionRegressionType(GroupType):
|
|
category = GroupCategory.PERFORMANCE.value
|
|
category = GroupCategory.PERFORMANCE.value
|
|
enable_auto_resolve = False
|
|
enable_auto_resolve = False
|
|
released = True
|
|
released = True
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -482,7 +457,6 @@ class MonitorCheckInFailure(GroupType):
|
|
category = GroupCategory.CRON.value
|
|
category = GroupCategory.CRON.value
|
|
released = True
|
|
released = True
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
- default_priority = PriorityLevel.HIGH
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -493,7 +467,6 @@ class MonitorCheckInTimeout(GroupType):
|
|
category = GroupCategory.CRON.value
|
|
category = GroupCategory.CRON.value
|
|
released = True
|
|
released = True
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
- default_priority = PriorityLevel.HIGH
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -504,7 +477,6 @@ class MonitorCheckInMissed(GroupType):
|
|
category = GroupCategory.CRON.value
|
|
category = GroupCategory.CRON.value
|
|
released = True
|
|
released = True
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
creation_quota = Quota(3600, 60, 60_000) # 60,000 per hour, sliding window of 60 seconds
|
|
- default_priority = PriorityLevel.HIGH
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -514,7 +486,6 @@ class ReplayDeadClickType(GroupType):
|
|
slug = "replay_click_dead"
|
|
slug = "replay_click_dead"
|
|
description = "Dead Click Detected"
|
|
description = "Dead Click Detected"
|
|
category = GroupCategory.REPLAY.value
|
|
category = GroupCategory.REPLAY.value
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -523,7 +494,6 @@ class ReplayRageClickType(GroupType):
|
|
slug = "replay_click_rage"
|
|
slug = "replay_click_rage"
|
|
description = "Rage Click Detected"
|
|
description = "Rage Click Detected"
|
|
category = GroupCategory.REPLAY.value
|
|
category = GroupCategory.REPLAY.value
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@dataclass(frozen=True)
|
|
@@ -533,7 +503,6 @@ class FeedbackGroup(GroupType):
|
|
description = "Feedback"
|
|
description = "Feedback"
|
|
category = GroupCategory.FEEDBACK.value
|
|
category = GroupCategory.FEEDBACK.value
|
|
creation_quota = Quota(3600, 60, 1000) # 1000 per hour, sliding window of 60 seconds
|
|
creation_quota = Quota(3600, 60, 1000) # 1000 per hour, sliding window of 60 seconds
|
|
- default_priority = PriorityLevel.MEDIUM
|
|
|
|
|
|
|
|
|
|
|
|
@metrics.wraps("noise_reduction.should_create_group", sample_rate=1.0)
|
|
@metrics.wraps("noise_reduction.should_create_group", sample_rate=1.0)
|