Skip to content

Ignore the dead meetings.invites_sent column - #3022

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

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

Conversation

@mroderick

Copy link
Copy Markdown
Collaborator

Problem

First half of #3017 (per the plan in #3015).

meetings.invites_sent is a boolean, default false, that tracked whether a meeting's invite batch had gone out. The last read and the last write were removed in 39bbbe52 (2020-12-02, "Ignore invites_sent column from now on"); that commit records the intent to drop the column later. Nothing has referenced it since, and it still loads on every meeting query.

Following the same two-step removal as #3007: ignore the column in this PR, drop it with a safety_assured remove_column in a follow-up PR.

Why the ignore step is load-bearing

Production runs with Heroku preboot: the release phase runs migrations before new dynos boot, and old dynos keep serving against the new schema during the window. Rails 8.1 builds explicit column lists (SELECT "meetings"."id", ..., "meetings"."invites_sent", ...), so dropping the column while old dynos serve would fail every meeting query on them with PG::UndefinedColumn.

Changes

  • Add invites_sent to self.ignored_columns on Meeting.
  • Spec guard: Meeting.new no longer responds to invites_sent.

Acceptance

  • Meeting.ignored_columns includes invites_sent; Meeting.all.to_sql no longer names the column.
  • Full suite passes: make test (1729 examples, 0 failures).
  • rubocop clean on both touched files.
Review notes

The meetings.invites_sent boolean has been dead since 2020. Its last
read and write were removed in 39bbbe5 (2020-12-02), which tracked
the intent to drop it later. Nothing has referenced the column since.

Ignore the column before dropping it. Old releases build their meeting
SELECT list from their schema cache and name every column explicitly,
so a drop while old dynos still serve under Heroku preboot would fail
every meeting query on them. The removal itself is a safety_assured
remove_column in a separate deploy. Part of codebar#3017.
@mroderick
mroderick marked this pull request as ready for review October 13, 2026 14:06
@mroderick
mroderick enabled auto-merge October 13, 2026 14:07
@mroderick
mroderick merged commit f8b84a5 into codebar:master Oct 13, 2026
10 checks passed
mroderick added a commit that referenced this pull request Oct 13, 2026
Step 2 of #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 (#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.
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