Page MenuHomePhabricator

REL1_39 extension requires LBFactory::getReplicaDatabase, which isn't in MW 1.39
Open, Needs TriagePublic

Description

Steps to reproduce

  1. Install MW 1.39
  2. Download REL1_39 from ExtensionDistributor and install: https://extdist.wmflabs.org/dist/extensions/Editcount-REL1_39-6a830ed.tar.gz
  3. Go to Special:EditCount
  4. Enter a user name

Expected behavior

The extension outputs the edit count

Observed behavior

[84be554544b78ec19e67b424] /wiki/Special:Editcount Error: Call to undefined method Wikimedia\Rdbms\LBFactorySimple::getReplicaDatabase()

Backtrace:

from /var/www/html/extensions/Editcount/src/Editcount.php(71)
#0 /var/www/html/extensions/Editcount/src/Editcount.php(39): Editcount->editsByNs()
#1 /var/www/html/includes/specialpage/SpecialPage.php(701): Editcount->execute()
#2 /var/www/html/includes/specialpage/SpecialPageFactory.php(1428): SpecialPage->run()
#3 /var/www/html/includes/MediaWiki.php(316): MediaWiki\SpecialPage\SpecialPageFactory->executePath()
#4 /var/www/html/includes/MediaWiki.php(904): MediaWiki->performRequest()
#5 /var/www/html/includes/MediaWiki.php(562): MediaWiki->main()
#6 /var/www/html/index.php(50): MediaWiki->run()
#7 /var/www/html/index.php(46): wfIndexMain()
#8 {main}

Confirmed the REL1_39 extension uses the missing function:

$ grep -niR getReplicaDatabase Editcount
Editcount/src/Editcount.php:71:         $dbr = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getReplicaDatabase();
Editcount/src/Editcount.php:103:                $dbr = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getReplicaDatabase();

Workarounds

  • Manually downgrade the extension to a previous version
  • Upgrade from LTS 1.39 to stable 1.41 or master? (not tested)

Event Timeline

Oznogon updated the task description. (Show Details)

Change adding use of getReplicaDatabase made in commit 522636b... ("Editcount: Migrate to fluent style query"), cherry-picked from the master branch on 24 Jan 2024. The change set the new minimum version from 1.32 to 1.36.

LBFactory::getReplicaDatabase doesn't appear to be implemented in the MW REL1_39 branch. First appears in REL1_40. T326274 commit I78dd5c (" rdbms: Switch LBFactory::getReplicaDatabase to narrow IReadableDatabase").

Oznogon renamed this task from 1.39 branch uses getReplicaDatabase, which isn't in MW 1.39 to REL1_39 extension requires LBFactory::getReplicaDatabase, which isn't in MW 1.39.Mar 10 2024, 7:28 PM