Meeting show pages run 63-93 queries per request (attendee N+1)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 74/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Ambito
- backend, performance
Direzione di ricerca
Inizia da MeetingsController#show e app/views/meetings/show.html.haml per tracciare come vengono caricati e renderizzati i partecipanti e i loro membri. Misura nuovamente il conteggio attuale delle query dal Codebar requests dashboard prima di apportare modifiche. Il lavoro è completato quando la pagina show viene renderizzata in modo identico e il suo p50 di queries_count scende dai ~63 riportati a una cifra singola.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
MeetingsController#show runs 63 queries per request (median), 93 at p95 for a page with ~60 attendees — a classic N+1. Only 412 requests in the last 7 days so this is small in aggregate (1.6% of allocations), but the per-request cost is the worst query-count in the app and cheap to fix.
Measured
7-day window 2026-09-21..27 (canonical logs): 412 requests, allocations p50 25,679, queries_count p50 63, p95 93. Re-measure from current logs before starting.
The loop in app/views/meetings/show.html.haml touches attendee.member.avatar(56) and attendee.member.full_name per row, and @attendees is built without preloading:
@attendees = @meeting.invitations.where(attending: true)
each attendee then triggers a members lookup (plus whatever avatar loading costs).
Suggested directions
- Preload members:
@meeting.invitations.where(attending: true).includes(:member) - Check
members/organisers_gridfor the same pattern on@meeting.organisers - While there:
sanitize(@meeting.description)runs per render — cache the fragment or sanitize on write (same treatment as #2951)
Verify
queries_count p50 for MeetingsController#show drops from ~63 to single digits on the Codebar requests dashboard; page renders identically.
Related: #2951, #2952 (same measurement method)
- Lingua principale
- Ruby
- Stelle
- 104
- Fork
- 205
- Merge medio
- 1g 2h
- PR unite (30g)
- 81
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di codebar/planner
-
good first issue tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue refactoring tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Chapter show pages allocate ~21k+ objects per render for large chapters (18% of app allocations)Apertaperformance
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di codebar/planner
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
rubocop/ruby-style-guide#984 ·
-
Dev Portal: Wizard refereshApertainternal product:dev-portal release-docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Kong/developer.konghq.com#7393 ·
I maintainer di solito rispondono entro 1 giorno
-
Unused stubs and fixturesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
fastlane/fastlane#30286 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
TheOdinProject/curriculum#31432 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/web interface
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno