Steps to replicate the issue (include links if applicable):
- Place database in readonly mode
- Browse to a page with Cargo data
What happens?:
Error message:
Original exception: [Y-WoGm2Ndn9qAFMXfSkw5gAAixM] /index.php/Main_Page Wikimedia\Rdbms\DBReadOnlyError from line 995 of /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/Database.php: Database is read-only: This wiki is currently being upgraded to a newer software version. Please check back in a couple of hours. Backtrace: #0 /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/Database.php(1273): Wikimedia\Rdbms\Database->assertIsWritableMaster() #1 /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/Database.php(1224): Wikimedia\Rdbms\Database->executeQuery() #2 /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/Database.php(3452): Wikimedia\Rdbms\Database->query() #3 /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/DBConnRef.php(68): Wikimedia\Rdbms\Database->delete() #4 /var/www/html/mediawiki_corporate/includes/libs/rdbms/database/DBConnRef.php(518): Wikimedia\Rdbms\DBConnRef->__call() #5 /var/www/html/mediawiki_corporate/extensions/Cargo/includes/CargoBackLinks.php(32): Wikimedia\Rdbms\DBConnRef->delete() #6 /var/www/html/mediawiki_corporate/extensions/Cargo/includes/CargoBackLinks.php(46): CargoBackLinks::removeBackLinks() #7 /var/www/html/mediawiki_corporate/extensions/Cargo/includes/parserfunctions/CargoQuery.php(194): CargoBackLinks::setBackLinks() #8 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3340): CargoQuery::run() #9 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3047): Parser->callParserFunction() #10 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(263): Parser->braceSubstitution() #11 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3225): PPFrame_Hash->expand() #12 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(263): Parser->braceSubstitution() #13 /var/www/html/mediawiki_corporate/includes/parser/PPTemplateFrame_Hash.php(89): PPFrame_Hash->expand() #14 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3222): PPTemplateFrame_Hash->cachedExpand() #15 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(263): Parser->braceSubstitution() #16 /var/www/html/mediawiki_corporate/includes/parser/PPTemplateFrame_Hash.php(169): PPFrame_Hash->expand() #17 /var/www/html/mediawiki_corporate/includes/parser/PPTemplateFrame_Hash.php(181): PPTemplateFrame_Hash->getNamedArgument() #18 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3834): PPTemplateFrame_Hash->getArgument() #19 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(280): Parser->argSubstitution() #20 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(2963): PPFrame_Hash->expand() #21 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(263): Parser->braceSubstitution() #22 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(3225): PPFrame_Hash->expand() #23 /var/www/html/mediawiki_corporate/includes/parser/PPFrame_Hash.php(263): Parser->braceSubstitution() #24 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(2887): PPFrame_Hash->expand() #25 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(1556): Parser->replaceVariables() #26 /var/www/html/mediawiki_corporate/includes/parser/Parser.php(651): Parser->internalParse() #27 /var/www/html/mediawiki_corporate/includes/OutputPage.php(2113): Parser->parse() #28 /var/www/html/mediawiki_corporate/includes/OutputPage.php(2063): OutputPage->parseInternal() #29 /var/www/html/mediawiki_corporate/includes/skins/Skin.php(1932): OutputPage->parseAsInterface() #30 /var/www/html/mediawiki_corporate/includes/libs/objectcache/wancache/WANObjectCache.php(1529): Skin->{closure}() #31 /var/www/html/mediawiki_corporate/includes/libs/objectcache/wancache/WANObjectCache.php(1376): WANObjectCache->fetchOrRegenerate() #32 /var/www/html/mediawiki_corporate/includes/skins/Skin.php(1933): WANObjectCache->getWithSetCallback() #33 /var/www/html/mediawiki_corporate/includes/skins/Skin.php(1958): Skin->getCachedNotice() #34 /var/www/html/mediawiki_corporate/includes/skins/SkinTemplate.php(384): Skin->getSiteNotice() #35 /var/www/html/mediawiki_corporate/includes/skins/SkinTemplate.php(127): SkinTemplate->prepareQuickTemplate() #36 /var/www/html/mediawiki_corporate/includes/skins/SkinTemplate.php(144): SkinTemplate->generateHTML() #37 /var/www/html/mediawiki_corporate/includes/OutputPage.php(2622): SkinTemplate->outputPage() #38 /var/www/html/mediawiki_corporate/includes/MediaWiki.php(952): OutputPage->output() #39 /var/www/html/mediawiki_corporate/includes/MediaWiki.php(965): MediaWiki->{closure}() #40 /var/www/html/mediawiki_corporate/includes/MediaWiki.php(548): MediaWiki->main() #41 /var/www/html/mediawiki_corporate/index.php(53): MediaWiki->run() #42 /var/www/html/mediawiki_corporate/index.php(46): wfIndexMain() #43 {main}
What should have happened instead?:
No error message
Software version (skip for WMF-hosted wikis like Wikipedia):
MW1.35, Cargo 3.2
Possible fix
diff --git a/includes/CargoBackLinks.php b/includes/CargoBackLinks.php index 65cf5f1..0b6138e 100644 --- a/includes/CargoBackLinks.php +++ b/includes/CargoBackLinks.php @@ -29,7 +29,7 @@ class CargoBackLinks { public static function removeBackLinks( $pageId ) { $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); $dbw = $lb->getConnectionRef( DB_PRIMARY ); - if ( $dbw->tableExists( 'cargo_backlinks' ) ) { + if ( $dbw->tableExists( 'cargo_backlinks' ) && !$dbw->isReadOnly() ) { $dbw->delete( 'cargo_backlinks', [ 'cbl_query_page_id' => $pageId ], __METHOD__ ); @@ -39,7 +39,7 @@ class CargoBackLinks { public static function setBackLinks( $title, $resultsPageIds ) { $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); $dbw = $lb->getConnectionRef( DB_PRIMARY ); - if ( !$dbw->tableExists( 'cargo_backlinks' ) ) { + if ( !$dbw->tableExists( 'cargo_backlinks' ) || $dbw->isReadOnly() ) { return; } // Sanity check