chore(sync-service): upgrade Elixir to 1.20.0-rc.3#3992
Conversation
Claude Code ReviewSummaryThis PR upgrades Elixir from 1.19.5 to 1.20.0-rc.3, fixes all resulting compatibility warnings in Electric's source, and bumps postgrex to a git commit with the Elixir 1.20 compatibility fix. The changes are mechanical and correct. What's Working Well
Issues FoundCritical (Must Fix)None. Important (Should Fix)Still upgrading to an RC, not a stable release File: From iteration 1: the version being pinned is Suggestions (Nice to Have)None remaining. Issue ConformanceNo linked issue (unchanged from iteration 1). The PR description clearly covers motivation and scope, so this is a minor point for a maintenance upgrade. Previous Review Status
The two fixup commits addressed the postgrex warnings by switching from a not-yet-released Review iteration: 2 | 2026-03-11 |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3992 +/- ##
==========================================
- Coverage 85.73% 82.98% -2.75%
==========================================
Files 51 65 +14
Lines 3343 3814 +471
Branches 612 609 -3
==========================================
+ Hits 2866 3165 +299
- Misses 475 647 +172
Partials 2 2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This comment has been minimized.
This comment has been minimized.
Upgrade Elixir from 1.19.5 to 1.20.0-rc.3 while keeping Erlang/OTP at 28.4. Fix Elixir 1.20 compatibility warnings: - Remove 7 unused `require` statements detected by stricter checks - Add pin operator (`^`) in bitstring size patterns (5 occurrences) - Rename `Changes.record()` type to `Changes.row()` to avoid overriding new built-in `record/0` type - Remove unreachable `:shutdown` case clause in pool.ex (caught by improved type inference from preceding handle_info clause) - Use `apply/3` in telemetry.ex to avoid type checker flagging compile-time conditional as always-false Also bump postgrex 0.21.1 -> 0.22.0 (with db_connection and telemetry transitive bumps). Co-Authored-By: Claude Opus 4.6 <[email protected]>
Fix Elixir 1.20 warnings in code merged from main after rebase Co-Authored-By: Claude Opus 4.6 <[email protected]>
fe1f308 to
504092c
Compare
Remove leftover blank line after require Logger removal Co-Authored-By: Claude Opus 4.6 <[email protected]>
Move require Logger inside conditional block in telemetry.ex and add .tool-versions hash to CI cache keys to prevent stale caches when upgrading Elixir/OTP. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Summary
requirestatements^) in 5 bitstring size patternsChanges.record()toChanges.row()(new built-in type conflict):shutdownclause in pool.ex (improved type inference)apply/3in telemetry.ex to avoid compile-time conditional type warningKnown issue
Postgrex.Types.definegenerates code that Elixir 1.20's compiler flags as having unused functions. This is a postgrex compatibility issue — the 2 warnings come from generated code and cannot be suppressed from our side. Electric's own source is warning-free.Test plan
mix compilepasses (only 2 dep-generated warnings remain)mix format --check-formattedpassesmix testpasses (382 doctests, 8 properties, 1443 tests, 0 failures)🤖 Generated with Claude Code