Skip to content

Commit 1777eee

Browse files
fix: webhookpayload DB constraint (#94473)
the previous constraint enforced that the destination type had to be sentry region and the region name had to be null instead of enforcing: if the destination type is sentry region then the region name must be null
1 parent b86206a commit 1777eee

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

migrations_lockfile.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ feedback: 0001_squashed_0004_index_together
1111

1212
flags: 0001_squashed_0004_add_flag_audit_log_provider_column
1313

14-
hybridcloud: 0022_webhook_payload_update
14+
hybridcloud: 0023_correct_webhook_payload_constraint
1515

1616
insights: 0002_backfill_team_starred
1717

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Generated by Django 5.2.1 on 2025-06-26 19:37
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 = False
22+
23+
dependencies = [
24+
("hybridcloud", "0022_webhook_payload_update"),
25+
]
26+
27+
operations = [
28+
migrations.RemoveConstraint(
29+
model_name="webhookpayload",
30+
name="webhookpayload_region_name_not_null",
31+
),
32+
migrations.AddConstraint(
33+
model_name="webhookpayload",
34+
constraint=models.CheckConstraint(
35+
condition=models.Q(
36+
models.Q(("destination_type", "sentry_region"), _negated=True),
37+
("region_name__isnull", False),
38+
_connector="OR",
39+
),
40+
name="webhookpayload_region_name_not_null",
41+
),
42+
),
43+
]

src/sentry/hybridcloud/models/webhookpayload.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ class Meta:
8181

8282
constraints = [
8383
models.CheckConstraint(
84-
condition=Q(destination_type=DestinationType.SENTRY_REGION)
85-
& Q(region_name__isnull=False),
84+
condition=~Q(destination_type=DestinationType.SENTRY_REGION)
85+
| Q(region_name__isnull=False),
8686
name="webhookpayload_region_name_not_null",
8787
),
8888
]

0 commit comments

Comments
 (0)