ResourceLoader's MessageBlobStore suffers from the following defects:
It was not designed from the ground up to be a distributed system, so there are subtle race conditions that are difficult to isolate and fix.
- It duplicates a lot of logic from MessageCache.
- It uses timestamps to manage cache entries.
See also previous discussion and brain storming at T90001: Evaluate folding msg_resource and msg_resource_links tables into objectcache, which discusses one possible solution to this.
Plan:
- Remove use of msg_resource_links table. Use runtime ResourceLoaderModule::getMessages() instead.
- Remove use of msg_resource table. Convert MessageBlobStore to using BagOStuff instead of a dedicated table. Probably main cache / WANCache. Requires use of getMulti() for performance reasons.
- Evaluate if we can phase out MessageBlobStore altogether. This will require MessageCache to grow an efficient getMulti() method. Note that MessageCache is only for MediaWiki-namespace overrides. The underlying LocalisationCache effectively has a getMulti() already by having all messages in a single storage key.