• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mroderick / codebar-planner
96%
master: 95%

Build:
Build:
LAST BUILD BRANCH: fix/invitation-log-retry-handling
DEFAULT BRANCH: master
Repo Added 11 Jul 2025 08:20PM UTC
Token vPb66DExHmn8kKCIdxCr3cvXvGCjXCICV regen
Build 116 Last
Files 182
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/deduplicate-chapter-members
branch: fix/deduplicate-chapter-members
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/deduplicate-chapter-members
  • add-docs
  • add-editor-config
  • add-scout-apm
  • add-sitemap-generator
  • add-tests-for-2515
  • attempt-to-fix-issue-template
  • bundle-ignore-junk
  • docs/improve-workflow-documentation
  • feature/chapters-sidebar-v3
  • feature/chapters-sidebar-viewcomponent
  • feature/events-upcoming-past
  • feature/homepage-events-limit
  • feature/plausible-analytics
  • feature/seeds-performance-data
  • fix-broken-chosen
  • fix-duplicate-waiting-list-entries
  • fix-error-656-undefined-method-event-for-nil
  • fix-member-details-validation-order
  • fix-missing-authentication-error-translation
  • fix/cookie-serializer-migration
  • fix/dashboard-eager-loading
  • fix/event-description-xss-vulnerability
  • fix/events-controller-fixes
  • fix/events-sponsors-eager-loading
  • fix/find-by-nil-errors
  • fix/flaky-listable-tests
  • fix/homepage-n-plus-one-eager-loading
  • fix/homepage-performance
  • fix/invitation-log-retry-handling
  • fix/member-attending-cache
  • fix/playwright-version-mismatch
  • fix/render-not-found-json-error
  • fix/subscription-unique-index
  • fix/workshop-invitation-resilience
  • freeze-postgres-version
  • imagemagick-check
  • improve-intro-text
  • improve-language
  • improve-og-tags
  • improve-repository-configs
  • increase-delayed-job-max-runtime
  • issue-2367-workshop-feedback
  • issue-2445
  • link-to-chapters-from-pills
  • lock-gem-platforms
  • make-event-rendering-faster
  • no-og-tags-on-admin
  • optimise-images
  • params-expect
  • policy-tests
  • pr/fix-find-by-nil-errors
  • remove-2024-impact-report-banner
  • remove-bootsnap
  • remove-go-squared
  • remove-google-analytics
  • remove-meta-partial
  • remove-puma-cluster-mode-config
  • remove-skylight
  • remove-twitter
  • remove-unused-i18n-features
  • remove-unused-new-relic
  • replace-claude-md-with-agents-md
  • speedup-ci-tests
  • stop-pinning-image-processing
  • stop-using-update-attribute
  • update-year-for-impact-report
  • upgrade-ruby
  • use-playwright
  • use-rails-7-1-defaults
  • workshop-invitation-controller

08 Apr 2026 07:45PM UTC coverage: 95.507%. First build
24155059187

push

github

mroderick
fix: deduplicate members in chapter_students and chapter_coaches

Members subscribed to multiple groups within a chapter were being
processed multiple times when sending invitations with audience='everyone',
causing 'Member has already been taken' validation errors.

Root Cause:
- Member.in_group() uses JOIN on subscriptions, returning duplicate rows
  when a member is subscribed to the same group type multiple times
- 336 members in London chapter affected (subscribed to both Students and Coaches)
- 35 members in Berlin chapter affected
- 57 members in Brighton chapter affected

Impact:
- Workshop invitation batches failed mid-process (e.g., 517 of 7000+
  invitations sent before failure)
- InvitationLogEntry validates uniqueness of member_id per invitation,
  causing validation errors on second processing attempt
- Admins had to manually retry batch sends multiple times

Affected Chapters:
- 46 of 54 chapters (85%) have members with duplicate subscriptions
- ~1,200 members affected across all chapters
- Top 5: London (336), West London (79), Brighton (57), South London (57),
  Barcelona (55), Edinburgh (37), Berlin (35)

Timeline:
- Original code (Jan 2017, commit 448acc7c) included .uniq for deduplication
- Refactoring (May 2018, commit d7a463da) extracted to scopes but
  accidentally removed the .uniq call

Fix: Add .distinct to chapter_students and chapter_coaches methods,
restoring the deduplication behavior that existed before the refactoring.

Tests:
- Add spec for unique members when subscribed to same group multiple times
- Add spec for unique invitations per role when member is in both groups

2 of 2 new or added lines in 1 file covered. (100.0%)

3465 of 3628 relevant lines covered (95.51%)

46.06 hits per line

Relevant lines Covered
Build:
Build:
3628 RELEVANT LINES 3465 COVERED LINES
46.06 HITS PER LINE
Source Files on fix/deduplicate-chapter-members
  • Tree
  • List 182
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
24155059187 fix/deduplicate-chapter-members fix: deduplicate members in chapter_students and chapter_coaches Members subscribed to multiple groups within a chapter were being processed multiple times when sending invitations with audience='everyone', causing 'Member has already been taken'... push 08 Apr 2026 08:00PM UTC mroderick github
95.51
See All Builds (114)

Badge your Repo: codebar-planner

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc