On 3 December 2012 21:16, Rob Lanphier <robla(a)wikimedia.org> wrote:
2. Reminder that we need to either fix or revert
Merlijn's changes on
master prior to deploying 1.21wmf6, lest we bring down itwikisource
again. I'm going to guess that without more feedback, Merlijn won't
be able to fix this, so we should plan on reverting on Thursday or so
if this thread goes stale.
I'll give some more background on my analysis of why this happened. In any
case, I'll create a revert patch before thursday, so it shouldn't be a
problem to deploy it.
The reason itwikisource died is a combination of how LST is used on
itwikisource and how the new LST implementation worked. I'll try to give a
short description here.
On most wiki's, the Main Page consists of several transcluded pages, i.e.
'Main Page/header', 'Main Page/Section Something', 'Main Page/Section
Something Else'. This is not the case on itwikisource: instead of using
seperate pages, it uses a single page, and LST's the relevant sections - so
Pagina Principale transcludes *sections *from "Pagina principale/Sezioni" -
eight of them.
In the original LST implementation, this was not a problem: just the
transcluded sections were rendered, so overall, 'Pagina principale/Sezioni'
was only parsed once - but in a eight seperate pieces. However, in the *
current* situation, the whole of 'Pagina principale/Sezioni' is rendered
for *every* transclusion, which means that the parsing times goes up by a
factor of 8. To make matters worse, this structure is also used further
down the template tree, which means the overall parsing time goes up to ~
30s, the parser's limit. (the current parsing time is ~2s).
As such, I think Rob's suggestion of caching the parsing step might be
enough to solve the issues. The parsing will still be more resource
intensive, but at least it shouldn't reach bring itwikisource to it's
knees. However, I don't have the setup to test this currently, nor do I
really have the time to set this up this week.
So -- I'll first make sure there is a working revert patch submitted. After
that, I'll try to work on creating a more resource-friendly implementation.
Hopefully there will be some comments on how to do that in an even better
way by then.