Closed ormsbee closed 10 months ago
We would need to move the interfaces and tests as listed in the replacement into edx-platform proper before we archive this repo.
This is currently being worked on by the Aximprovements team: https://github.com/openedx/axim-engineering/issues/853
This work was completed via https://github.com/openedx/edx-platform/pull/33218
The PR to remove to move interfaces and test into edx-platform. https://github.com/openedx/edx-platform/pull/33218
Proposal Date
2022-11-10
Target Ticket Acceptance Date
2022-11-24
Earliest Open edX Named Release Without This Functionality
Palm - 2023-04
Rationale
The edx-user-state-client repo was created to provide a common interface definition for multiple backends that could hold XBlock user state.
My recollection is that at one point edx.org was running into scaling issues with it's
courseware_studentmodule
table, somewhere around the point we went into the billions of rows. This repo was spun out with the idea that edX would swap in some more exotic storage solution (e.g. Cassandra), while leaving MySQL as the default LMS backend for XBlock student state.Since that time, we discovered that the performance issues primarily came from lock contention when updating the same rows in unnecessarily long transactions, and merged a fix that largely obviated the issue.
Now it's just a shell of a repo that needs to be upgraded and maintained. It defines a narrow interface with only one concrete implementation sitting in edx-platform and no future implementations planned. More recently, it's made a history-related PR in edx-platform more difficult because it defines tests that are executed in edx-platform, and we want to change its behavior to be request-aware.
Removal
The entire edx-user-state-client repo would be archived. The PyPI package would remain to not break older installs.
Replacement
The interfaces and tests in this repo would be transferred to edx-platform.
Deprecation
No response
Migration
No response
Additional Info
No response