On Tue, Sep 9, 2014 at 12:03 PM, Daniel Kinzler <[email protected]> wrote:
> Hi all! > > tl;dr: How to best handle the situation of an old parser cache entry not > containing all the info expected by a newly deployed version of code? > > > We are currently working to improve our usage of the parser cache for > Wikibase/Wikidata. E.g., We are attaching additional information related to > languagelinks the to ParserOutput, so we can use it in the skin when > generating > the sidebar. > > However, when we change what gets stored in the parser cache, we still > need to > deal with old cache entries that do not yet have the desired information > attached. Here's a few options we have if the expected info isn't in the > cached > ParserOutput: > > 1) ...then generate it on the fly. On every page view, until the parser > cache is > purged. This seems bad especially if generating the required info means > hitting > the database. > > 2) ...then invalidate the parser cache for this page, and then a) just > live with > this request missing a bit of output, or b) generate on the fly c) trigger > a > self-redirect. > > 3) ...then generated it, attach it to the ParserOutput, and push the > updated > ParserOutput object back into the cache. This seems nice, but I'm not sure > how > to do that. > https://gerrit.wikimedia.org/r/#/c/158879/ is my attempt to update ParserOutput cache entry, though it seems too simplistic a solution. Any feedback on this would be great or suggestions on how to do this better, or maybe it's crazy idea. :P Cheers, Katie > > 4) ...then force a full re-rendering and re-caching of the page, then > continue. > I'm not sure how to do this cleanly. > > > So, the simplest solution seems to be 2, but it means that we invalidate > the > parser cache of *every* page on the wiki potentially (though we will not > hit the > long tail of rarely viewed pages immediately). It effectively means that > any > such change requires all pages to be re-rendered eventually. Is that > acceptable? > > Solution 3 seems nice and surgical, just injecting the new info into the > cached > object. Is there a nice and clean way to *update* a parser cache entry like > that, without re-generating it in full? Do you see any issues with this > approach? Is it worth the trouble? > > > Any input would be great! > > Thanks, > daniel > > -- > Daniel Kinzler > Senior Software Developer > > Wikimedia Deutschland > Gesellschaft zur Förderung Freien Wissens e.V. > > _______________________________________________ > Wikitech-l mailing list > [email protected] > https://lists.wikimedia.org/mailman/listinfo/wikitech-l -- @wikimediadc / @wikidata _______________________________________________ Wikitech-l mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikitech-l
