Skip to content

fix(alerts): Update migration to not remove FK to group#115932

Merged
ceorourke merged 5 commits into
masterfrom
ceorourke/update-0010-migration
May 20, 2026
Merged

fix(alerts): Update migration to not remove FK to group#115932
ceorourke merged 5 commits into
masterfrom
ceorourke/update-0010-migration

Conversation

@ceorourke
Copy link
Copy Markdown
Member

@ceorourke ceorourke commented May 20, 2026

This migration fails when applying due to a timeout because it can't get a lock on the group column - the default generated migration when making a column nullable has Django drop and re-create the foreign key, so the fix (hopefully) is to add a SeparateDatabaseAndState to not do the unnecessary extra step of removing the FK first.

@ceorourke ceorourke requested a review from a team as a code owner May 20, 2026 18:51
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label May 20, 2026
Copy link
Copy Markdown
Member

@wedamija wedamija left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sql needs to look like

ALTER TABLE "sentry_notificationmessage" ADD CONSTRAINT "sentry_notificationmessage_group_id_6e588d2d_notnull" CHECK ("group_id" IS NOT NULL) NOT VALID;
ALTER TABLE "sentry_notificationmessage" VALIDATE CONSTRAINT "sentry_notificationmessage_group_id_6e588d2d_notnull";
ALTER TABLE "sentry_notificationmessage" ALTER COLUMN "group_id" SET NOT NULL;
ALTER TABLE "sentry_notificationmessage" DROP CONSTRAINT "sentry_notificationmessage_group_id_6e588d2d_notnull";

Just from the generated sql here: #115578

Using the constraint this way allows us to not have to lock the table while we validate the data

Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 076e050. Configure here.

Comment on lines +44 to +49
DO $$
BEGIN
ALTER TABLE "sentry_notificationmessage" ADD CONSTRAINT "sentry_notificationmessage_group_id_notnull" CHECK ("group_id" IS NOT NULL) NOT VALID;
EXCEPTION
WHEN duplicate_object THEN NULL;
END $$;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could also do DROP CONSTRAINT IF EXISTS before it. I think what you have will work, although I'm not sure if this is starting a transaction or something that might cause it to fail

@ceorourke ceorourke merged commit c29ef53 into master May 20, 2026
84 checks passed
@ceorourke ceorourke deleted the ceorourke/update-0010-migration branch May 20, 2026 20:23
JonasBa pushed a commit that referenced this pull request May 21, 2026
This migration fails when applying due to a timeout because it can't get
a lock on the group column - the default generated migration when making
a column nullable has Django drop and re-create the foreign key, so the
fix (hopefully) is to add a `SeparateDatabaseAndState` to not do the
unnecessary extra step of removing the FK first.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants