Skip to content

feat: speed up agenda.ics; cache more agenda data#10356

Merged
jennifer-richards merged 16 commits intoietf-tools:feat/icalfrom
jennifer-richards:faster-ical
Feb 5, 2026
Merged

feat: speed up agenda.ics; cache more agenda data#10356
jennifer-richards merged 16 commits intoietf-tools:feat/icalfrom
jennifer-richards:faster-ical

Conversation

@jennifer-richards
Copy link
Member

@jennifer-richards jennifer-richards commented Feb 3, 2026

Speeds up agenda.ics endpoints for full IETF meetings to near instant. Assuming we keep the caches warm as intended, it will also speed up all agenda page loads. The updates do not affect interim meetings, only type_id="ietf".

  • Refactors the agenda_ical() and its helpers to use the same precomputed data that is supplied to the agenda-neue frontend.
  • Adds agenda caching for all meetings, not just the current meeting, with a week-scale cache lifetime for non-current meetings.
  • Changes the ical links to use versionless agenda hrefs so they'll always point to the current revision.
  • Adds a task to populate/refresh the cache for all meetings so it will always be warm.
  • Renames agenda_data_refresh to agenda_data_refresh_task (keeps/deprecates old task until we deploy and update our config to use the new name)
  • Fixes caching for get_href / get_versionless_href mixes data between these calls #10355

I propose that we continue refreshing the agenda data for the "current" meeting every 5 minutes but only weekly for other meetings. That was assumed in choosing the new constants in settings.py. This does not add a mechanism for invalidating the cache dynamically if the agenda is changed. A change like that will need a manual cache refresh if waiting for the next regular refresh is not acceptable.

Note: The cache is kept in memcache. Data for each meeting is 200-300 kB, so it fits well within memcache's size limit. Restarting memcached will lose cached data, though. I think this is acceptable because memcached restarts are rare and the cache will recover on its own as requests come in, usually with at most one slow request per meeting.

@jennifer-richards jennifer-richards marked this pull request as ready for review February 5, 2026 01:52
@codecov
Copy link

codecov bot commented Feb 5, 2026

Codecov Report

❌ Patch coverage is 83.56164% with 24 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (feat/ical@752c6e5). Learn more about missing BASE report.

Files with missing lines Patch % Lines
ietf/meeting/views.py 82.20% 21 Missing ⚠️
ietf/meeting/tasks.py 85.00% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             feat/ical   #10356   +/-   ##
============================================
  Coverage             ?   88.37%           
============================================
  Files                ?      325           
  Lines                ?    43638           
  Branches             ?        0           
============================================
  Hits                 ?    38563           
  Misses               ?     5075           
  Partials             ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jennifer-richards jennifer-richards changed the title feat: share precomputed agenda data with agenda.ics feat: speed up agenda.ics; cache more agenda data Feb 5, 2026
@jennifer-richards jennifer-richards changed the base branch from main to feat/ical February 5, 2026 16:40
@jennifer-richards jennifer-richards merged commit 9b4af00 into ietf-tools:feat/ical Feb 5, 2026
10 checks passed
@jennifer-richards jennifer-richards deleted the faster-ical branch February 5, 2026 16:41
@jennifer-richards
Copy link
Member Author

n.b., this was merged without review into the feat/ical feature branch so it could be deployed to a dev instance. Review / actual merge to main will be via #10362

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Feb 9, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

caching for get_href / get_versionless_href mixes data between these calls

1 participant