From 8f320010000aaf5cb4b48e84f6f625006b7abc67 Mon Sep 17 00:00:00 2001 From: Evan Purkhiser Date: Thu, 13 Nov 2025 17:12:33 -0500 Subject: [PATCH] ref(crons): Delete Monitor.is_muted database column (stage 4) [NEW-564: There needs to be some way to mute the entire cron detector](https://linear.app/getsentry/issue/NEW-564/there-needs-to-be-some-way-to-mute-the-entire-cron-detector) Stage 4 of the migration completes the removal of Monitor.is_muted: - Adds migration 0013 to physically delete the is_muted column from the database - Uses SafeRemoveField with DeletionAction.DELETE to safely drop the column - This should be run after Stage 3 has been deployed and validated in production This completes the migration from monitor-level muting to environment-level muting. --- migrations_lockfile.txt | 2 +- .../0013_delete_monitor_is_muted_field.py | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/sentry/monitors/migrations/0013_delete_monitor_is_muted_field.py diff --git a/migrations_lockfile.txt b/migrations_lockfile.txt index 8627f000f421b5..5f93ac034f903c 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_delete_monitor_is_muted_field nodestore: 0001_squashed_0002_nodestore_no_dictfield diff --git a/src/sentry/monitors/migrations/0013_delete_monitor_is_muted_field.py b/src/sentry/monitors/migrations/0013_delete_monitor_is_muted_field.py new file mode 100644 index 00000000000000..768c3a424a2431 --- /dev/null +++ b/src/sentry/monitors/migrations/0013_delete_monitor_is_muted_field.py @@ -0,0 +1,33 @@ +# Generated by Django 5.2.1 on 2025-11-13 22:11 + +from sentry.new_migrations.migrations import CheckedMigration +from sentry.new_migrations.monkey.fields import SafeRemoveField +from sentry.new_migrations.monkey.state import DeletionAction + + +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 = [ + SafeRemoveField( + model_name="monitor", + name="is_muted", + deletion_action=DeletionAction.DELETE, + ), + ]