Skip to content

Commit 18b120b

Browse files
committed
make killswitch check more universal
1 parent e5c4f12 commit 18b120b

File tree

5 files changed

+27
-15
lines changed

5 files changed

+27
-15
lines changed

src/sentry/grouping/ingest/seer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def should_call_seer_for_grouping(event: Event, variants: Mapping[str, BaseVaria
4848

4949
if (
5050
_has_customized_fingerprint(event, variants)
51-
or killswitch_enabled(project.id, event)
51+
or killswitch_enabled(project.id, ReferrerOptions.INGEST, event)
5252
or _circuit_breaker_broken(event, project)
5353
# The rate limit check has to be last (see below) but rate-limiting aside, call this after other checks
5454
# because it calculates the stacktrace string, which we only want to spend the time to do if we already

src/sentry/issues/endpoints/group_similar_issues_embeddings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from sentry.seer.similarity.similar_issues import get_similarity_data_from_seer
1919
from sentry.seer.similarity.types import SeerSimilarIssueData, SimilarIssuesEmbeddingsRequest
2020
from sentry.seer.similarity.utils import (
21+
ReferrerOptions,
2122
TooManyOnlySystemFramesException,
2223
event_content_has_stacktrace,
2324
get_stacktrace_string,
@@ -75,7 +76,7 @@ def get_formatted_results(
7576
return [(serialized_groups[group_id], group_data[group_id]) for group_id in group_data]
7677

7778
def get(self, request: Request, group: Group) -> Response:
78-
if killswitch_enabled(group.project.id):
79+
if killswitch_enabled(group.project.id, ReferrerOptions.SIMILAR_ISSUES_TAB):
7980
return Response([])
8081

8182
latest_event = group.get_latest_event()

src/sentry/seer/similarity/utils.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
class ReferrerOptions(StrEnum):
6969
INGEST = "ingest"
7070
BACKFILL = "backfill"
71+
DELETION = "deletion"
72+
SIMILAR_ISSUES_TAB = "similar_issues_tab"
7173

7274

7375
class TooManyOnlySystemFramesException(Exception):
@@ -329,40 +331,45 @@ def record_did_call_seer_metric(*, call_made: bool, blocker: str) -> None:
329331

330332
def killswitch_enabled(
331333
project_id: int | None,
334+
referrer: ReferrerOptions,
332335
event: GroupEvent | Event | None = None,
333336
) -> bool:
334337
"""
335338
Check both the global and similarity-specific Seer killswitches.
336339
"""
337-
340+
is_ingest = referrer == ReferrerOptions.INGEST
341+
logger_prefix = f"grouping.similarity.{referrer.value}"
338342
logger_extra = {"event_id": event.event_id if event else None, "project_id": project_id}
339343

340344
if options.get("seer.global-killswitch.enabled"):
341345
logger.warning(
342-
"should_call_seer_for_grouping.seer_global_killswitch_enabled",
346+
f"{logger_prefix}.seer_global_killswitch_enabled", # noqa
343347
extra=logger_extra,
344348
)
345-
record_did_call_seer_metric(call_made=False, blocker="global-killswitch")
349+
if is_ingest:
350+
record_did_call_seer_metric(call_made=False, blocker="global-killswitch")
346351

347352
return True
348353

349354
if options.get("seer.similarity-killswitch.enabled"):
350355
logger.warning(
351-
"should_call_seer_for_grouping.seer_similarity_killswitch_enabled",
356+
f"{logger_prefix}.seer_similarity_killswitch_enabled", # noqa
352357
extra=logger_extra,
353358
)
354-
record_did_call_seer_metric(call_made=False, blocker="similarity-killswitch")
359+
if is_ingest:
360+
record_did_call_seer_metric(call_made=False, blocker="similarity-killswitch")
355361

356362
return True
357363

358364
if killswitch_matches_context(
359365
"seer.similarity.grouping_killswitch_projects", {"project_id": project_id}
360366
):
361367
logger.warning(
362-
"should_call_seer_for_grouping.seer_similarity_project_killswitch_enabled",
368+
f"{logger_prefix}.seer_similarity_project_killswitch_enabled", # noqa
363369
extra=logger_extra,
364370
)
365-
record_did_call_seer_metric(call_made=False, blocker="project-killswitch")
371+
if is_ingest:
372+
record_did_call_seer_metric(call_made=False, blocker="project-killswitch")
366373

367374
return True
368375

src/sentry/tasks/delete_seer_grouping_records.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
delete_grouping_records_by_hash,
99
delete_project_grouping_records,
1010
)
11-
from sentry.seer.similarity.utils import killswitch_enabled
11+
from sentry.seer.similarity.utils import ReferrerOptions, killswitch_enabled
1212
from sentry.silo.base import SiloMode
1313
from sentry.tasks.base import instrumented_task
1414

@@ -34,7 +34,7 @@ def delete_seer_grouping_records_by_hash(
3434
Task to delete seer grouping records by hash list.
3535
Calls the seer delete by hash endpoint with batches of hashes of size `BATCH_SIZE`.
3636
"""
37-
if killswitch_enabled(project_id) or options.get(
37+
if killswitch_enabled(project_id, ReferrerOptions.DELETION) or options.get(
3838
"seer.similarity-embeddings-delete-by-hash-killswitch.enabled"
3939
):
4040
return
@@ -57,7 +57,7 @@ def call_delete_seer_grouping_records_by_hash(
5757
if (
5858
project
5959
and project.get_option("sentry:similarity_backfill_completed")
60-
and not killswitch_enabled(project.id)
60+
and not killswitch_enabled(project.id, ReferrerOptions.DELETION)
6161
and not options.get("seer.similarity-embeddings-delete-by-hash-killswitch.enabled")
6262
):
6363
# TODO (jangjodi): once we store seer grouping info in GroupHash, we should filter by that here
@@ -86,7 +86,7 @@ def call_seer_delete_project_grouping_records(
8686
*args: Any,
8787
**kwargs: Any,
8888
) -> None:
89-
if killswitch_enabled(project_id) or options.get(
89+
if killswitch_enabled(project_id, ReferrerOptions.DELETION) or options.get(
9090
"seer.similarity-embeddings-delete-by-hash-killswitch.enabled"
9191
):
9292
return

src/sentry/tasks/embeddings_grouping/backfill_seer_grouping_records_for_project.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
from sentry.grouping.api import GroupingConfigNotFound
1010
from sentry.grouping.enhancer.exceptions import InvalidEnhancerConfig
1111
from sentry.models.project import Project
12-
from sentry.seer.similarity.utils import killswitch_enabled, project_is_seer_eligible
12+
from sentry.seer.similarity.utils import (
13+
ReferrerOptions,
14+
killswitch_enabled,
15+
project_is_seer_eligible,
16+
)
1317
from sentry.silo.base import SiloMode
1418
from sentry.tasks.base import instrumented_task
1519
from sentry.tasks.embeddings_grouping.utils import (
@@ -80,7 +84,7 @@ def backfill_seer_grouping_records_for_project(
8084
assert current_project_id is not None
8185

8286
if options.get("seer.similarity-backfill-killswitch.enabled") or killswitch_enabled(
83-
current_project_id
87+
current_project_id, ReferrerOptions.BACKFILL
8488
):
8589
logger.info("backfill_seer_grouping_records.killswitch_enabled")
8690
return

0 commit comments

Comments
 (0)