openedx / openedx/openedx-platform
Improve CCX course publishing to avoid cross-process course_published signals
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.2k
- Forks
- 4.4k
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 42
Description
Description:
While working on https://github.com/openedx/edx-platform/pull/36128, we attempted to fix an issue where CCX courses failed to load with “course outline not found” errors. The fix added cms.djangoapps.contentstore.apps.ContentstoreConfig to LMS production settings so that course publish signals would trigger properly when creating a CCX.
However, this approach relies on a cross-process signal emission: the CMS emits course_published signals, which then spawn Celery workers on the LMS side. This pattern has caused multiple hard-to-debug issues in the past, especially with block transformers and environments where Celery is run in-process.
Suggested improvement (per @ormsbee):
Instead of enabling CMS code in the LMS, we should move CCX course publishing logic into CMS directly, avoiding the cross-process signal pattern entirely.
Next steps:
- Investigate how CCX course publishing is currently implemented.
- Refactor to run publishing within CMS, aligning with Dave’s suggestion.
- Ensure that CCX course creation triggers the necessary updates without relying on LMS signal handling.
Context:
Original PR: #36128
cc: @ormsbee @kdmccormick @pdpinch
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 with original PR #36128 and trace how CCX course creation currently reaches course publishing through CMS and LMS signals. Investigate the CMS and LMS production-settings involvement, then verify that CCX creation updates the course without cross-process signal handling or in-process Celery issues.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, distributed-systems
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100