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 create some more exotic storage solution (e.g. Cassandra), while leaving MySQL as the default backend.
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, with the only plausible 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.
I’d like to archive this repo and transfer the interface definition back to edx-platform. Please let me know if you have any thoughts or concerns.