openedx / openedx/openedx-platform
Bug: course_home/v1/navigation 500s until the CMS worker rewrites the learning_sequences outline
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.2k
- Forks
- 4.4k
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 42
Description
GET /api/course_home/v1/navigation/<course key> answers HTTP 500 with the LMS
error page for a window after a publish. The log shows
LearningContext.DoesNotExist then
CourseOutlineData.DoesNotExist: No CourseOutlineData for <course key>.
The learning_sequences outline the view depends on is written by the CMS
worker on the publish signal. On the measured run that task landed 33 s after
the publish, because the same queue was carrying thousands of per-block
content.search.tasks.upsert_xblock_index_doc tasks, each taking around 21 s.
Until it lands the learner's course home cannot be built at all, while the
neighbouring course_home/v1/outline view and the Blocks API both answer 200
for the same state.
Expected: treat a missing CourseOutlineData the way the outline view does,
falling back to the unfiltered blocks or answering an empty model, rather than a
500.
Environment: Tutor main, 2026-09-11, with ENABLE_COURSEWARE_INDEX = True
and Meilisearch-backed Studio content search on.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the course_home/v1/navigation view and compare its handling of missing CourseOutlineData with the neighboring course_home/v1/outline view. Reproduce the post-publish state where the CMS worker has not written the learning_sequences outline; done means navigation no longer returns HTTP 500 and follows the described fallback or empty-model behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100