Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Funded Project ID

FC-0026

Provider

OpenCraft

Axim Contact(s)

Dave Ormsbee

Expected Completion Date

July 2023

Status

Complete

Additional Project Details

This project continued ModuleStore simplification and addresses some of the shortcomings discovered when completing BD-13.

Before BD-13, there was a separate XBlock runtime object created for each block (problem, HTML, video, etc.). This was a known source of confusion and memory leaks. BD-13 simplified this by making a single runtime object, but the runtime services would be re-initialized for each block. This resulted in a regression w.r.t. anonymous ID generation in the runtime services because anonymous ID behavior is different for certain legacy block types–and in fact this edge case behavior only occurred on one code path where there were access checks being made at the SequenceBlock level that overrode the runtime values set at the ProblemBlock.

The short term fix for that problem is here, but the longer term fix to avoid this class of problem is to make the runtime only initialize its services once. This means eliminating block-specific initialization behavior, like in the case of anonymous ID generation.

The resulting code is no longer vulnerable to the sort of block execution ordering bug above. It is also much simpler to understand (particularly the critical prepare_runtime_for_user function), since it finally brings the code to align with how most people intuitively expected it to work. There are also some modest CPU and possibly memory improvements that come from this work, but that was not the primary goal.

GitHub

https://github.com/openedx/edx-platform/pulls?q=FC-0026+

  • No labels