Deprecation/Removal: DraftModuleStore (Old Mongo Modulestore)

Hi folks,

I’ve put together a DEPR for the DraftModuleStore, also known as “Old Mongo”:

The DraftModuleStore (also sometimes referred to as “Old Mongo”) is the interface used to store courseware content for courses with course run keys of the format “Org/Course/Run”, e.g. “edX/Demo/2012”. Newer courses of the format “course-v1:Org+Course+Run” use the DraftVersioningModuleStore (also commonly called “Split Mongo”). This has been available since the Birch release and the vast majority of sites have never used DraftModuleStore. One of the main motivations for the newer modulestore was atomic publishes, as it was possible to get partially applied updates if there was an error during the import process with DraftModuleStore.

The proposed timeline is to have a warning message appear for Juniper, and to remove Old Mongo entirely by Koa. Since we’ve had Split Mongo since Birch, my hope is that this does not affect very many people. But since course lifecycles are not very well managed in edx-platform, I thought it would be better to give a somewhat longer deprecation window than usual.

Full details at: [DEPR-58] - JIRA

Because it’s the holiday season and many folks will be taking extended vacations this month, I’m going to leave open the discussion window for longer than usual, and target DEPR acceptance for 2020-01-30.

Thank you.

Dave

Edit: In response to feedback, I’ve extended the decision date to 2020-01-30 so that site operators have more time to talk to course teams coming back from winter break.

2 Likes

@dave Yey! Glad to see some old layers get cleaned up lately, thanks for taking care of these :slight_smile:

Just wanted to give this thread a bump, for those who might be recently coming back from holiday break. If there are no more comments by 2020-01-30, the DEPR will move forward as is and “Org/Course/Run” style Old Mongo courses will be removed in the Koa release.

This DEPR ticket has been marked “Accepted”. A deprecation notice will be shown for Old Mongo courses in Juniper, will full removal targeted for Koa.

We have now merged the deprecation warning to the Juniper branch:

Old Mongo Deprecation Status Update

With the merge of edx-platform#31134, the DEPR ticket for Old Mongo has been moved to the “Removed” status column.

This was a long effort by many folks at edx/2U, and a lot of painstaking coding and testing from Raccoon Gang. I want to especially recognize Evgeniy Sagirov, @Glib_Glugovskiy, and Ivan Niedielnitsev for their technical work on this project. This is something we’ve been trying to get done in one form or another for the better part of ten years now. It involved ripping out a lot of crufty old code in a non-disruptive way, collapsing a bunch of “if old mongo, do this, else do that” logic, and modifying or removing thousands of tests from the edx-platform test run (and discovering that a handful of these were either broken or nonsensical).

That being said, while the vast majority of Old Mongo has been removed and it’s not a functional Modulestore any longer, the code isn’t completely dead. In order to make sure we don’t break other systems, the following small bits of Old Mongo will remain for now and be tracked in separate efforts later:

Course Static Assets

Reading static assets is still supported, so that we don’t break links to certificate-related assets that are stored in Old Mongo’s contentstore. The long term fix for this is to migrate those files into credentials.

Read access for the root CourseBlock

The root CourseBlock is used in various places to get high level metadata about a course (name, settings, etc.), and is also used when re-building CourseOverviews. See this comment for more details.

MixedModuleStore/DraftModuleStore

Because we still have some access to the old ModuleStore for the above two reasons, we need to maintain the MixedModuleStore facade.

3 Likes