Preload workshop_host in DashboardQuery.upcoming_events_for_user (per-workshop N+1 on /dashboard)
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Inizia in app/queries/dashboard_query.rb intorno alle righe 27-40, dove upcoming_events_for_user usa eager_load(:sponsors) senza caricare l'host del workshop. Controlla come Workshop#host attraversa workshop_host e sponsor, e come la PR #3066 ha aggiunto il suo preload. Aggiungi preload(workshop_host: :sponsor) accanto al join esistente e lascia :workshop_host fuori da eager_load, come avverte l'issue. È completato quando il numero di query di /dashboard smette di crescere con il numero di workshop.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
DashboardQuery.upcoming_events_for_user runs one workshop_host lookup per workshop on every /dashboard render. Give it the same treatment as PR #3066: keep :sponsors in the join and add preload(workshop_host: :sponsor).
app/queries/dashboard_query.rb:27-40eager_loads:sponsorsbut never loads:workshop_hostWorkshop#hostlazy-loads throughworkshop_host&.sponsor, so each card costs up to two extra queries — up to2 × DashboardQuery::MAX_WORKSHOP_QUERYper render- The
dashboardaction renders the sameEventCardComponent→WorkshopPresenter#venue→model.hostpath that PR #3066 fixed for the homepage - Do not add
:workshop_hostto theeager_loadlist: sharing theworkshop_sponsorsjoin alias is the #2975 host-loss trap
Raised from the review of PR #3066; the gap predates that PR.
- Lingua principale
- Ruby
- Stelle
- 106
- Fork
- 208
- Merge medio
- 19h 51m
- PR unite (30g)
- 57
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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 Mezza giornata Idoneità per principianti 35/100
codebar/planner#3069 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Dual Invitiation issueForse già presa @mroderick l’ha presa 19 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
codebar/planner#3008 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
codebar/planner#3006 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di codebar/planner
Issue simili
-
respond_to? on a poly receiver answers true for a program class's private or protected methodAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
TheOdinProject/curriculum#31512 ·
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
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ruby-grape/grape-swagger#1014 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
rubys/roundhouse#1757 ·