Last modified: 2009-11-28 04:43:49 UTC
File redirects on Commons work locally and from English sites, but don't seem to be working from other languages... Works locally: http://commons.wikimedia.org/wiki/File:Blason_dpt_fr_HautesAlpes.svg Works remotely on English: http://en.wikipedia.org/wiki/File:Blason_dpt_fr_HautesAlpes.svg http://en.wikinews.org/wiki/File:Blason_dpt_fr_HautesAlpes.svg Fails, showing empty page: http://fr.wikipedia.org/wiki/Fichier:Blason_dpt_fr_HautesAlpes.svg http://fr.wikinews.org/wiki/Fichier:Blason_dpt_fr_HautesAlpes.svg http://de.wikipedia.org/wiki/Datei:Blason_dpt_fr_HautesAlpes.svg http://de.wikinews.org/wiki/Datei:Blason_dpt_fr_HautesAlpes.svg Offhand I'm guessing something's using the local namespace name in a cache or DB lookup, which naturally enough fails when it's difference from what Commons is storing (the English master name).
Think I've found it; setting up a local test to confirm fix before I commit.
Ok confirmed steps to reproduce: * Set up shared repo wiki w/ English * Set up client wiki w/ French (or other language with non-default 'File:' namespace) using it via ForeignDBRepo, with 'hasSharedCache' on * Configure both to use memcached * Upload some file to shared repo, say 'Redirect test target.png' * Access a so far non-existent file 'Redirect test source.png' *from the client site* * Create a redirect *on the shared repo* from 'File:Redirect test source.png' to 'File:Redirect test target.png' * Attempt to access 'Redirect test source.png' again from both wikis Expected result: * Functional redirect on English master site * Functional redirect on French client site Actual result: * Functional redirect on English master site * Missing redirect on French client site, as though the site never exists The two wikis are caching their redirect lookups under separate keys because the key includes the local namespace name. When the English wiki updates its records for the creation of the redirect, it thus isn't able to clear the negative-lookup record the French wiki cached previously. Until the cache record expires, it won't attempt to look up the redirect in the database again.
Fixed in r57434.
Fix deployed live.