Page MenuHomePhabricator

Remove 'options' arguments to ParserOutput::getText()
Open, MediumPublic

Description

The way we see this working is:

  1. Every options argument to ParserOutput::getText() becomes a ParserOption. NOTE not all of these options will necessarily split the parser cache; only the ones which have been "applied" split the cache.
  2. Methods which call $parserOutput->getText() will have the ParserOption corresponding to that $parserOutput handy -- it is used in the cache lookup, so it *should* always be available, but sometimes methods don't pass it along appropriately. We will incrementally fix these APIs to ensure the ParserOptions follow the ParserOutput.
  3. (Eventually) the ParserOutput will track which parser options have already been applied to it as post-cache transformations, allowing the parser output transformation pipeline to (a) be idempotent, and (b) be cacheable at any point. So if you decide you don't want to split the parser cache for anything, you can cache the initial parser results, and handle all the rest of the parser options as post-cache transforms. If later you decide to cache the result of a particular costly intermediate transformation, or even the final transformation output streamed to the user, those will also be stored alongside the record of the transformations already done on them, so a future pass through the pipeline will perform only the "work remaining" from the set of input ParserOptions.

This ought to also avoid the need to mutate the $options array during the post cache transformation pipeline, as both WikidataPageBanner and Translate are currently doing.

See also T303615: There's no reason to split the ParserCache on wrapclass which initially proposed the opposite direction (moving a parser option into a ::getText() parameter) but that's because the parser option was splitting the cache. Step #1 above entails *not* splitting the cache for these options until/unless they are applied to the ParserOutput.

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/coremaster+3 -0
mediawiki/extensions/CentralNoticewmf_deploy+0 -0
mediawiki/coremaster+2 -1
mediawiki/extensions/CentralNoticemaster+6 -4
mediawiki/coremaster+2 -2
mediawiki/extensions/CampaignEventsmaster+5 -1
mediawiki/extensions/CentralAuthmaster+9 -2
mediawiki/extensions/DiscussionToolsmaster+5 -1
mediawiki/extensions/LiquidThreadsmaster+12 -2
mediawiki/extensions/SecurePollmaster+14 -4
mediawiki/extensions/CiteThisPagemaster+1 -1
mediawiki/extensions/Flowmaster+4 -2
mediawiki/extensions/FlaggedRevsmaster+3 -2
mediawiki/extensions/Lintermaster+9 -2
mediawiki/extensions/Newslettermaster+5 -1
mediawiki/extensions/TemplateSandboxmaster+8 -5
mediawiki/extensions/GlobalBlockingmaster+5 -1
mediawiki/extensions/AbuseFiltermaster+10 -2
mediawiki/extensions/WikiLambdamaster+6 -2
mediawiki/coremaster+228 -116
mediawiki/extensions/WikibaseMediaInfomaster+5 -1
mediawiki/extensions/Translatemaster+0 -8
mediawiki/coremaster+36 -18
mediawiki/coremaster+13 -16
mediawiki/coremaster+61 -9
Show related patches Customize query in gerrit

Event Timeline

Change 972047 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] [ParserOutput] Make 'enableSectionEditLinks' a ParserOption

https://gerrit.wikimedia.org/r/972047

Change 972048 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] [OutputPage] replace ParserOutput::getText() options with ParserOptions

https://gerrit.wikimedia.org/r/972048

Change 974657 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] WikiPage: remove ::suppressTOC hack

https://gerrit.wikimedia.org/r/974657

Change 972047 merged by jenkins-bot:

[mediawiki/core@master] [ParserOutput] Make 'enableSectionEditLinks' a ParserOption

https://gerrit.wikimedia.org/r/972047

Change 974657 merged by jenkins-bot:

[mediawiki/core@master] WikiPage: remove ::suppressTOC hack

https://gerrit.wikimedia.org/r/974657

Change #1056213 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] [OutputPage] replace ParserOutput::getText() options with ParserOptions, v2

https://gerrit.wikimedia.org/r/1056213

Change #972048 abandoned by C. Scott Ananian:

[mediawiki/core@master] [OutputPage] replace ParserOutput::getText() options with ParserOptions

Reason:

v2 is better: Iec19f9f08a4d88ea534ffa7b24e6e01ffbba2723

https://gerrit.wikimedia.org/r/972048

Change #1129981 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Hard deprecate OutputPage::addParserOutput{,Content} with null ParserOptions

https://gerrit.wikimedia.org/r/1129981

Change #1129987 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CampaignEvents@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129987

Change #1129992 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/WikibaseMediaInfo@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1129992

Change #1129993 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/AbuseFilter@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129993

Change #1129994 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/SecurePoll@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129994

Change #1129996 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/LiquidThreads@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129996

Change #1129997 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/WikiLambda@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129997

Change #1129998 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CentralAuth@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129998

Change #1129999 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CiteThisPage@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129999

Change #1130000 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/DiscussionTools@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1130000

Change #1130001 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/FlaggedRevs@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130001

Change #1130002 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Flow@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130002

Change #1130003 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/GlobalBlocking@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1130003

Change #1130004 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Linter@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130004

Change #1130005 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Newsletter@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130005

Change #1130006 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/TemplateSandbox@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130006

Change #1130007 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Translate@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130007

Change #1130007 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Remove ineffective TOC-setting code

https://gerrit.wikimedia.org/r/1130007

Change #1056213 merged by jenkins-bot:

[mediawiki/core@master] [OutputPage] replace ParserOutput::getText() options with ParserOptions, v2

https://gerrit.wikimedia.org/r/1056213

Change #1129992 merged by jenkins-bot:

[mediawiki/extensions/WikibaseMediaInfo@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1129992

Change #1129993 merged by jenkins-bot:

[mediawiki/extensions/AbuseFilter@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129993

Change #1129997 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129997

Change #1130003 merged by jenkins-bot:

[mediawiki/extensions/GlobalBlocking@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1130003

Change #1130006 merged by jenkins-bot:

[mediawiki/extensions/TemplateSandbox@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130006

Change #1130005 merged by jenkins-bot:

[mediawiki/extensions/Newsletter@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130005

Change #1130004 merged by jenkins-bot:

[mediawiki/extensions/Linter@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130004

Change #1130002 merged by jenkins-bot:

[mediawiki/extensions/Flow@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130002

Change #1130001 merged by jenkins-bot:

[mediawiki/extensions/FlaggedRevs@master] Add ParserOptions to OutputPage::addParserOutput()

https://gerrit.wikimedia.org/r/1130001

Change #1129999 merged by jenkins-bot:

[mediawiki/extensions/CiteThisPage@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129999

Change #1129996 merged by jenkins-bot:

[mediawiki/extensions/LiquidThreads@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129996

Change #1129994 merged by jenkins-bot:

[mediawiki/extensions/SecurePoll@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129994

Change #1129998 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129998

Change #1130000 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1130000

Change #1129987 merged by jenkins-bot:

[mediawiki/extensions/CampaignEvents@master] Add ParserOptions to OutputPage::addParserOutputContent()

https://gerrit.wikimedia.org/r/1129987

Change #1129981 merged by jenkins-bot:

[mediawiki/core@master] Hard deprecate OutputPage::addParserOutput{,Content} with null ParserOptions

https://gerrit.wikimedia.org/r/1129981

Change #1131346 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CentralNotice@master] Avoid use of OutputPage::parserOptions()

https://gerrit.wikimedia.org/r/1131346

Change #1131346 merged by jenkins-bot:

[mediawiki/extensions/CentralNotice@master] Avoid use of OutputPage::parserOptions()

https://gerrit.wikimedia.org/r/1131346

Change #1131364 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralNotice@wmf_deploy] Merge remote-tracking branch 'origin/master' into wmf_deploy

https://gerrit.wikimedia.org/r/1131364

Change #1131791 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Avoid use of OutputPage::parserOptions()

https://gerrit.wikimedia.org/r/1131791

Change #1131791 merged by jenkins-bot:

[mediawiki/core@master] Avoid use of OutputPage::parserOptions()

https://gerrit.wikimedia.org/r/1131791

Change #1131364 abandoned by Reedy:

[mediawiki/extensions/CentralNotice@wmf_deploy] Merge remote-tracking branch 'origin/master' into wmf_deploy

Reason:

https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CentralNotice/+/1131414

https://gerrit.wikimedia.org/r/1131364

Change #1134178 had a related patch set uploaded (by Thiemo Kreuz (WMDE); author: Thiemo Kreuz (WMDE)):

[mediawiki/core@master] Add @since tags to all ParserOptions::newFrom… methods

https://gerrit.wikimedia.org/r/1134178

Change #1134178 merged by jenkins-bot:

[mediawiki/core@master] Add @since tags to all ParserOptions::newFrom… methods

https://gerrit.wikimedia.org/r/1134178

MSantos triaged this task as Medium priority.Fri, Nov 21, 10:28 AM