Skip to content

Commit f0ef2cd

Browse files
authored
feat(inc): Add index to GroupOpenPeriod data jsonfield (#97534)
#96221 had to be reverted due to https://sentry.sentry.io/issues/6799376702 so we thought adding an index on `GroupOpenPeriod`'s `data` jsonfield to the frequently looked up `pending_incident_detector_id` key would help speed things up.
1 parent 40ab54e commit f0ef2cd

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

migrations_lockfile.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ preprod: 0014_commitcomparisons_fk
2727

2828
replays: 0006_add_bulk_delete_job
2929

30-
sentry: 0965_gzippeddict_big_tables
30+
sentry: 0966_groupopenperiod_data_pending_inc_detector_id_index
3131

3232
social_auth: 0003_social_auth_json_field
3333

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Generated by Django 5.2.1 on 2025-08-08 23:06
2+
3+
from django.db import migrations, models
4+
5+
from sentry.new_migrations.migrations import CheckedMigration
6+
7+
8+
class Migration(CheckedMigration):
9+
# This flag is used to mark that a migration shouldn't be automatically run in production.
10+
# This should only be used for operations where it's safe to run the migration after your
11+
# code has deployed. So this should not be used for most operations that alter the schema
12+
# of a table.
13+
# Here are some things that make sense to mark as post deployment:
14+
# - Large data migrations. Typically we want these to be run manually so that they can be
15+
# monitored and not block the deploy for a long period of time while they run.
16+
# - Adding indexes to large tables. Since this can take a long time, we'd generally prefer to
17+
# run this outside deployments so that we don't block them. Note that while adding an index
18+
# is a schema change, it's completely safe to run the operation after the code has deployed.
19+
# Once deployed, run these manually via: https://develop.sentry.dev/database-migrations/#migration-deployment
20+
21+
is_post_deployment = True
22+
23+
dependencies = [
24+
("sentry", "0965_gzippeddict_big_tables"),
25+
]
26+
27+
operations = [
28+
migrations.AddIndex(
29+
model_name="groupopenperiod",
30+
index=models.Index(
31+
models.F("data__pending_incident_detector_id"),
32+
name="data__pend_inc_detector_id_idx",
33+
),
34+
),
35+
]

src/sentry/models/groupopenperiod.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ class Meta:
7373
indexes = (
7474
# get all open periods since a certain date
7575
models.Index(fields=("group", "date_started")),
76+
models.Index(
77+
models.F("data__pending_incident_detector_id"),
78+
name="data__pend_inc_detector_id_idx",
79+
),
7680
)
7781

7882
constraints = (

0 commit comments

Comments
 (0)