Skip to content

Drop the dead meetings.invites_sent column - #3023

Merged
mroderick merged 3 commits into
codebar:masterfrom
mroderick:chore/drop-invites-sent-column
Oct 13, 2026
Merged

mroderick merged 3 commits into
codebar:masterfrom
mroderick:chore/drop-invites-sent-column

Conversation

@mroderick

@mroderick mroderick commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Second half of #3017 — stacks on #3022. The head branch is built on the ignore branch, so this PR shows two commits: #3022's ignore change and the drop below it. Merge #3022 first.

Drops the dead meetings.invites_sent boolean. Its last read and write were removed in 39bbbe52 (2020-12-02). The column is now ignored (see #3022), so the drop itself is safe once that change has deployed.

Merge and deploy order (load-bearing)

Production runs with Heroku preboot: under merges of the ignore change, old releases build their meeting SELECT list from the schema cache at boot and name every column explicitly. Dropping the column while a release that still names it serves would fail every meeting query on old dynos with PG::UndefinedColumn.

  1. Ignore the dead meetings.invites_sent column #3022 (ignore) merges and deploys first; soak until no production dynos predate it.
  2. Only then merge this PR. Its release both removes the ignored_columns entry (net change to meeting.rb across the pair is zero) and runs the migration in the release phase — the new release never names the column, and all dynos it replaces already carry the ignore.

Changes

  • safety_assured { remove_column :meetings, :invites_sent, :boolean, default: false } in 20261013100000_remove_invites_sent_from_meetings.rb
  • self.ignored_columns entry removed from Meeting (end state: empty list, no stale entry — avoids recreating Remove stale ignored_columns entries from Member #3016 debt)
  • schema.rb regenerated (version bumped, column removed)

Acceptance

  • No regression: meeting behaviour unchanged (the transient remove-verification specs are not kept in the suite).
  • Meeting.ignored_columns is empty; queries never name invites_sent.
  • Full suite passes: make test (1730 examples, 0 failures).
  • rubocop clean on all touched files.
Review notes
  • Mirror of chore(members): drop the dead unsubscribed column #3014 (the unsubscribed drop PR). Strong_migrations 2.8.0 prescribes the ignore-then-drop sequence; the safety_assured block is the documented exception, checked against the preboot window.
  • Production data: 51 meetings, all non-null (default false). The drop loses nothing.

Step 2 of codebar#3017. The meetings.invites_sent boolean has been dead
since 39bbbe5 (2020-12-02) removed its last read and write. The
absence is pinned in the meeting spec with a column_exists check.

Merge only after the ignored_columns change (codebar#3022) has deployed:
old releases name the column in their meeting SELECT list, built
from the schema cache at boot, and dropping it while they still
serve would fail every meeting query during the Heroku preboot
switch.
The respond_to and column_exists checks on invites_sent were one-off
verifiers for the removal. Once the drop merges they pin nothing that
can drift, so they do not stay in the suite.

@KimberleyCook KimberleyCook left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎉

@mroderick
mroderick marked this pull request as ready for review October 13, 2026 14:46
@mroderick
mroderick merged commit aaef48d into codebar:master Oct 13, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants