I just encountered the strangest MediaWiki behavior I've ever tried to debug. 
Thought you'd find it interesting.  (MediaWiki gurus: is the behavior & 
solution below new in 1.17.0?) I spent several hours figuring this out.

After installing MW 1.17, I noticed that every page on our wiki was throwing an 
identical error. The exact details of the error aren't important (an extension 
was invoking an external Linux command that was failing). The weird part was 
this: only ONE page on the wiki invoked this extension and could possibly 
produce the error... but that page was never being hit! At all! And EVERY wiki 
page was producing the error. Even special pages! This was really strange.

The page was Template:Foo. So I figured, naturally, that Template:Foo must be 
getting transcluded by a system message or some other article used on every 
page.  That turned out to be wrong.

So I removed all extensions except the one throwing the error. Nothing changed. 
So it's not caused by an interaction between extensions.

So, I found the line of code where the error was being thrown and inserted a 
var_dump(debug_backtrace()) to see what's going on. And now it got even 
weirder. Every time any wiki page was displayed, it was not just transcluding 
Template:Foo.  It was parsing a RANDOM ARTICLE that contains Template:Foo.  
Each time I displayed any wiki page, a different random article would get 
parsed, and they all transcluded Template:Foo.  Wild!

At this point, I was very confused.

Until I noticed that the "random articles" being selected for parsing were 
being picked in alphabetical order.

Any guesses? :-)

My coworker figured it out, or at least he has an idea that is consistent with 
the facts. Because Template:Foo is throwing an error, all pages that transclude 
it are failing to render. Which (probably) means they are being added to the 
MediaWiki job queue for reparsing.  So when any wiki page is hit, an article on 
the MediaWiki job queue is being processed. It fails again, throwing the error.

So, Template:Foo was not being used by the currently displayed article at all. 
It was being parsed via the job queue afterward.

Did something change in 1.17.0 with job queue processing to make this behavior 
happen, or at least make it more visible in the apache error log?

Thanks,
DanB

_______________________________________________
MediaWiki-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l

Reply via email to