Page MenuHomePhabricator

update.php should invalidate ResourceLoader message cache
Closed, ResolvedPublic

Description

https://www.mediawiki.org/wiki/Manual:Update.php says "Normally update.php purges the objectcache table in the database (generally contains the parser cache and the messages cache), if you don't want to purge this table, use the --nopurge option."

which is correct. It just deleted everything from objectcache.

However, that doesn't help with ResourceLoader JSON message blobs. Separately, MessageBlobStore::getFromDB says:

// Update the module's blobs if the set of messages changed or if the blob is older than $wgCacheEpoch

I suspect people don't run into this often because extension updates often change the set of messages (e.g. adding some). But if you just change the text, you hit it.

I can't think of any logical reason update.php should clear one message cache, but not another.

I also don't know any other way around this besides changing the epoch or manually messing with the database.

I think the simplest way to do it would be wipe out msg_resource and msg_resource_links . These are regenerated as needed by MessageBlobStore::insertMessageBlob .

It should behave the same in terms of --nopurge.


Version: 1.18.x
Severity: major

Details

Reference
bz44524

Event Timeline

bzimport raised the priority of this task from to Normal.
bzimport set Reference to bz44524.

Setting milestone to 1.21. This has affected various wikis (not wmf, since we don't use update.php) during upgrades. Also noticed it a couple times on my local dev wiki after updating.

Related URL: https://gerrit.wikimedia.org/r/58319 (Gerrit Change I15ceb60f5e2e4d3ed9ba818fe6cd619f9adce5b2)

(In reply to comment #2)

I15ceb60f5e2e4d3ed9ba818fe6cd619f9adce5b2

Backported to REL1_21 to make it easier for upgraders from 1.20 > 1.21

Related URL: https://gerrit.wikimedia.org/r/58462 (Gerrit Change I15ceb60f5e2e4d3ed9ba818fe6cd619f9adce5b2)