Page MenuHomePhabricator

Regression caused by patch to use Parser::fetchCurrentRevisionRecordOfTitle
Closed, ResolvedPublic

Description

Regression caused by c21ff6ec959913593598487ae663c3a74779d527

<subbu> cscott, alright, will update rt testing now.
<subbu> cscott, "Call to a member function getCurrentRevisionRecordCallback() on null" @ #0 /srv/parsoid-testing/extension/src/Config/PageConfig.php(176): Parser->fetchCurrentRevisionRecordOfTitle(Title)
<subbu> i am going to revert https://gerrit.wikimedia.org/r/c/mediawiki/services/parsoid/+/605686 on scandium and restart rt-testing to get around that crasher ... i am beginning to space out for the day but, reverting that on scandium will let rt testing proceed vs. crash on all pages.
<cscott> subbu: quite possibly https://gerrit.wikimedia.org/r/c/mediawiki/services/parsoid/+/605687 is already in gerrit as the fix for that crasher

Event Timeline

Reproducible, but only if parse.php is fetching wikitext; if you use a $wikitextOverride when you call PageConfigFactory::create then you pass a non-null MutableRevisionRecord as $revision when you construct your PageConfig, and the crash only occurs when $this->revision is null in PageConfig::getRevision(). So:

$ echo Foo | php bin/parse.php --integrated --pageName "Main Page"
<p data-parsoid='{"dsr":[0,3,0,0]}'>Foo</p>
$ php bin/parse.php --integrated --pageName "Main Page" < /dev/null
[97f27bc44ad40a03984f0653] [no req]   Error from line 3458 of /home/cananian/Projects/Wikimedia/core/includes/parser/Parser.php: Call to a member function getCurrentRevisionRecordCallback() on null
Backtrace:
#0 /home/cananian/Projects/Wikimedia/Parsoid/extension/src/Config/PageConfig.php(176): Parser->fetchCurrentRevisionRecordOfTitle(Title)
#1 /home/cananian/Projects/Wikimedia/Parsoid/extension/src/Config/PageConfig.php(234): MWParsoid\Config\PageConfig->getRevision()
#2 /home/cananian/Projects/Wikimedia/Parsoid/src/Wt2Html/PageConfigFrame.php(25): MWParsoid\Config\PageConfig->getRevisionContent()
#3 /home/cananian/Projects/Wikimedia/Parsoid/src/Config/Env.php(261): Wikimedia\Parsoid\Wt2Html\PageConfigFrame->__construct(Wikimedia\Parsoid\Config\Env, MWParsoid\Config\PageConfig, MWParsoid\Config\SiteConfig)
#4 /home/cananian/Projects/Wikimedia/Parsoid/src/Parsoid.php(153): Wikimedia\Parsoid\Config\Env->__construct(MWParsoid\Config\SiteConfig, MWParsoid\Config\PageConfig, MWParsoid\Config\DataAccess, array)
#5 /home/cananian/Projects/Wikimedia/Parsoid/src/Parsoid.php(193): Wikimedia\Parsoid\Parsoid->parseWikitext(MWParsoid\Config\PageConfig, array)
#6 /home/cananian/Projects/Wikimedia/Parsoid/bin/parse.php(330): Wikimedia\Parsoid\Parsoid->wikitext2html(MWParsoid\Config\PageConfig, array)
#7 /home/cananian/Projects/Wikimedia/Parsoid/bin/parse.php(582): Parse->wt2Html(array, array, NULL)
#8 /home/cananian/Projects/Wikimedia/core/maintenance/doMaintenance.php(107): Parse->execute()
#9 /home/cananian/Projects/Wikimedia/Parsoid/bin/parse.php(618): require_once(string)
#10 {main}

Cherry-picking I36022385c034b0aa7e946fef3107d0cb0b093654 solves the problem, since it was more careful about associating Parser and ParserOptions objects:

$ git cherry-pick 43b82b7
[master fb69ffd59] Clarify uses of legacy Parser objects
 Date: Sat Jun 13 01:33:11 2020 -0400
 5 files changed, 76 insertions(+), 62 deletions(-)
$ php bin/parse.php --integrated --pageName "Main Page" < /dev/null
<p data-parsoid='{"dsr":[0,48,0,0]}'><b data-parsoid='{"dsr":[0,48,3,3]}'>MediaWiki has been successfully installed.</b></p>
[...]
<li data-parsoid='{"dsr":[2449,2451,1,0]}'>e</li></ol>

Change 619890 had a related patch set uploaded (by C. Scott Ananian; owner: C. Scott Ananian):
[mediawiki/services/parsoid@master] Revert "Use Parser::fetchCurrentRevisionRecordOfTitle()"

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

Change 619890 merged by jenkins-bot:
[mediawiki/services/parsoid@master] Revert "Use Parser::fetchCurrentRevisionRecordOfTitle()"

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

ssastry triaged this task as High priority.

Change 620755 had a related patch set uploaded (by Subramanya Sastry; owner: Subramanya Sastry):
[mediawiki/vendor@master] Bump wikimedia/parsoid to v0.13.0-a6

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

Change 620755 merged by jenkins-bot:
[mediawiki/vendor@master] Bump wikimedia/parsoid to v0.13.0-a6

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