From 905f2883da536a0fb9e7c46f47e8762e93e46079 Mon Sep 17 00:00:00 2001 From: Yuval Mandelboum Date: Wed, 19 Nov 2025 15:39:04 -0800 Subject: [PATCH] fix(deletions): Fix MonitorIncident FK to MonitorCheckIn cascade While these FKs are supposed to have CASCADE on them according to our models, they are in fact not in the DB. Trying to run this to force them to be CASCADE --- migrations_lockfile.txt | 2 +- ...013_fix_monitorincident_checkin_cascade.py | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/sentry/monitors/migrations/0013_fix_monitorincident_checkin_cascade.py diff --git a/migrations_lockfile.txt b/migrations_lockfile.txt index 7e5efc99689f99..33c5203ba84c10 100644 --- a/migrations_lockfile.txt +++ b/migrations_lockfile.txt @@ -17,7 +17,7 @@ hybridcloud: 0024_add_project_distribution_scope insights: 0002_backfill_team_starred -monitors: 0012_remove_monitor_is_muted_field +monitors: 0013_fix_monitorincident_checkin_cascade nodestore: 0001_squashed_0002_nodestore_no_dictfield diff --git a/src/sentry/monitors/migrations/0013_fix_monitorincident_checkin_cascade.py b/src/sentry/monitors/migrations/0013_fix_monitorincident_checkin_cascade.py new file mode 100644 index 00000000000000..39e93ed22d1f24 --- /dev/null +++ b/src/sentry/monitors/migrations/0013_fix_monitorincident_checkin_cascade.py @@ -0,0 +1,50 @@ +# Generated by Django 5.2.8 on 2025-11-19 23:35 + +import django.db.models.deletion +from django.db import migrations + +import sentry.db.models.fields.foreignkey +from sentry.new_migrations.migrations import CheckedMigration + + +class Migration(CheckedMigration): + # This flag is used to mark that a migration shouldn't be automatically run in production. + # This should only be used for operations where it's safe to run the migration after your + # code has deployed. So this should not be used for most operations that alter the schema + # of a table. + # Here are some things that make sense to mark as post deployment: + # - Large data migrations. Typically we want these to be run manually so that they can be + # monitored and not block the deploy for a long period of time while they run. + # - Adding indexes to large tables. Since this can take a long time, we'd generally prefer to + # run this outside deployments so that we don't block them. Note that while adding an index + # is a schema change, it's completely safe to run the operation after the code has deployed. + # Once deployed, run these manually via: https://develop.sentry.dev/database-migrations/#migration-deployment + + is_post_deployment = False + + dependencies = [ + ("monitors", "0012_remove_monitor_is_muted_field"), + ] + + operations = [ + migrations.AlterField( + model_name="monitorincident", + name="starting_checkin", + field=sentry.db.models.fields.foreignkey.FlexibleForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="created_incidents", + to="monitors.monitorcheckin", + ), + ), + migrations.AlterField( + model_name="monitorincident", + name="resolving_checkin", + field=sentry.db.models.fields.foreignkey.FlexibleForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="resolved_incidents", + to="monitors.monitorcheckin", + ), + ), + ]