Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/sentry/event_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@
from sentry.models.releaseprojectenvironment import ReleaseProjectEnvironment
from sentry.models.releases.release_project import ReleaseProject
from sentry.net.http import connection_from_url
from sentry.options.rollout import in_random_rollout
from sentry.plugins.base import plugins
from sentry.quotas.base import index_data_category
from sentry.receivers.features import record_event_processed
Expand Down Expand Up @@ -1961,6 +1962,12 @@ def _process_existing_aggregate(
timeout=settings.SEER_SEVERITY_TIMEOUT, # Defaults to 300 milliseconds
)

severity_connection_pool_group_seer = connection_from_url(
settings.SEER_SCORING_URL,
retries=settings.SEER_SEVERITY_RETRIES,
timeout=settings.SEER_SEVERITY_TIMEOUT, # Defaults to 300 milliseconds
)


class SeverityScoreRequest(TypedDict):
message: str
Expand All @@ -1983,8 +1990,11 @@ def make_severity_score_request(
payload["trigger_timeout"] = True
if options.get("processing.severity-backlog-test.error"):
payload["trigger_error"] = True
default_connection_pool = severity_connection_pool
if in_random_rollout("issues.severity.group-seer-rollout-rate"):
default_connection_pool = severity_connection_pool_group_seer
return make_signed_seer_api_request(
connection_pool or severity_connection_pool,
connection_pool or default_connection_pool,
"/v0/issues/severity-score",
body=orjson.dumps(payload),
timeout=timeout,
Expand Down
6 changes: 6 additions & 0 deletions src/sentry/options/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -1132,6 +1132,12 @@
flags=FLAG_ALLOW_EMPTY | FLAG_AUTOMATOR_MODIFIABLE,
)

register(
"issues.severity.group-seer-rollout-rate",
type=Float,
default=0.0,
flags=FLAG_AUTOMATOR_MODIFIABLE,
)

# Killswitch for issue priority
register(
Expand Down
21 changes: 21 additions & 0 deletions tests/sentry/event_manager/test_severity.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@
from sentry.event_manager import (
SEER_ERROR_COUNT_KEY,
EventManager,
SeverityScoreRequest,
_get_severity_score,
make_severity_score_request,
severity_connection_pool,
severity_connection_pool_group_seer,
)
from sentry.models.group import Group
from sentry.testutils.cases import TestCase
Expand Down Expand Up @@ -329,6 +332,24 @@ def test_other_exception(
assert reason == "microservice_error"
assert cache.get(SEER_ERROR_COUNT_KEY) == 1

@patch("sentry.event_manager.make_signed_seer_api_request")
def test_group_seer_rollout_selects_pool(self, mock_request: MagicMock) -> None:
body: SeverityScoreRequest = {
"message": "boom",
"has_stacktrace": 0,
"handled": True,
"org_id": 1,
"project_id": 1,
}

with override_options({"issues.severity.group-seer-rollout-rate": 0.0}):
make_severity_score_request(body)
assert mock_request.call_args[0][0] is severity_connection_pool

with override_options({"issues.severity.group-seer-rollout-rate": 1.0}):
make_severity_score_request(body)
assert mock_request.call_args[0][0] is severity_connection_pool_group_seer


@with_feature("projects:first-event-severity-calculation")
@with_feature("organizations:seer-based-priority")
Expand Down
Loading