Page MenuHomePhabricator

$pageId must be an integer > 0
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error

MediaWiki version: 1.36.0-wmf.10

message
$pageId must be an integer > 0

Impact

Notes

See https://phabricator.wikimedia.org/T114352 (old ticket)

exception.class: InvalidArgumentException
exception.code: 0

Details

Request ID
4f431d364f9433ff6c3957c1
Request URL
https://jobrunner.discovery.wmnet/rpc/RunSingleJob.php
Stack Trace
exception.trace
#0 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Usage/Sql/EntityUsageTable.php(357): Wikibase\Client\Usage\PageEntityUsages->__construct(integer)
#1 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Usage/Sql/EntityUsageTable.php(337): Wikibase\Client\Usage\Sql\EntityUsageTable->foldRowsIntoPageEntityUsages(Wikimedia\Rdbms\ResultWrapper)
#2 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php(295): Wikibase\Client\Usage\Sql\EntityUsageTable->getPagesUsing(array, array)
#3 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php(204): Wikibase\Client\Usage\Sql\SqlUsageTracker->getPagesUsing(array, array)
#4 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Changes/AffectedPagesFinder.php(92): Wikibase\Client\Changes\AffectedPagesFinder->getAffectedPages(Wikibase\Lib\Changes\ItemChange)
#5 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Changes/ChangeHandler.php(135): Wikibase\Client\Changes\AffectedPagesFinder->getAffectedUsagesByPage(Wikibase\Lib\Changes\ItemChange)
#6 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/Changes/ChangeHandler.php(111): Wikibase\Client\Changes\ChangeHandler->handleChange(Wikibase\Lib\Changes\ItemChange, array)
#7 /srv/mediawiki/php-1.36.0-wmf.10/extensions/Wikibase/client/includes/ChangeNotificationJob.php(120): Wikibase\Client\Changes\ChangeHandler->handleChanges(array, array)
#8 /srv/mediawiki/php-1.36.0-wmf.10/extensions/EventBus/includes/JobExecutor.php(79): Wikibase\Client\ChangeNotificationJob->run()
#9 /srv/mediawiki/rpc/RunSingleJob.php(76): MediaWiki\Extension\EventBus\JobExecutor->execute(array)
#10 {main}

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Start with: Investigate (4h max) how to reproduce this error in the local environment.
Update the description with the details discovered

The stack trace looks like we’re getting the bad page ID from the database; EntityUsageTable::getPagesUsing() reads the eu_page_id from the wbc_entity_usage table, and then foldRowsIntoPageEntityUsages() passes the $pageId into the PageEntityUsages constructor, which complains if it’s not an int or less than one. (foldRowsIntoPageEntityUsages() casts it to int, so I think the < 1 is the only relevant part of that condition.)

However, I can’t find any such rows in the arwiki or dewiki tables now (the two wikis where this error is found in logstash):

MariaDB [arwiki]> SELECT * FROM wbc_entity_usage WHERE eu_page_id < 1 OR eu_page_id IS NULL LIMIT 10;
Empty set (0.001 sec)

MariaDB [dewiki]> SELECT * FROM wbc_entity_usage WHERE eu_page_id < 1 OR eu_page_id IS NULL LIMIT 10;
Empty set (0.001 sec)

So I’m guessing that this is a transient situation that resolves itself after a while.

Okay, I don’t know where these bad page IDs would be coming from. eu_page_id is only written from very few places:

  • AddUsagesForPageJob::run()UsageUpdater::addUsagesForPage()SqlUsageTracker::addUsedEntities()EntityUsageTable::addUsages() – but AddUsagesForPageJob asserts in the constructor that the page ID is greater than 0
  • DataUpdateHookHandler::onLinksUpdateComplete()DataUpdateHookHandler::doLinksUpdateComplete()UsageUpdater::replaceUsagesForPage()SqlUsageTracker::replaceUsedEntities()EntityUsageTable::addUsages() – but while the LinksUpdateComplete hook runs as a deferred update (see LinksUpdate::doUpdate()), the DataUpdateHookHandler gets the page ID from the LinksUpdate’s Title object, so even if the page is deleted in the meantime, as far as I can tell the page ID should still be nonzero, since I don’t see how the Title would know that its page ID was no longer valid

I suggest adding some logging for when invalid page IDs are written (probably at Warning level) and then looking at the stack traces of those warnings in logstash (if they happen at all).

Change 642452 had a related patch set uploaded (by Lucas Werkmeister (WMDE); owner: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@master] Log+skip bad page IDs when reading/writing entity usage

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

Change 642452 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] Log+skip bad page IDs when reading/writing entity usage

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

Moving to Stalled until wmf.20 is deployed next week, then we can start looking for the new log messages in Logstash.

Happened 10 times in the last 7 days (logstash), the invalid page ID is indeed 0, and it always seems to come from the DataUpdateHookHandler:

#0 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Usage/Sql/EntityUsageTable.php(195): Wikibase\Client\Usage\Sql\EntityUsageTable->makeUsageRows(integer, array)
#1 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Usage/Sql/SqlUsageTracker.php(224): Wikibase\Client\Usage\Sql\EntityUsageTable->addUsages(integer, array)
#2 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Store/UsageUpdater.php(107): Wikibase\Client\Usage\Sql\SqlUsageTracker->replaceUsedEntities(integer, array)
#3 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandler.php(135): Wikibase\Client\Store\UsageUpdater->replaceUsagesForPage(integer, array)
#4 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandler.php(124): Wikibase\Client\Hooks\DataUpdateHookHandler->doLinksUpdateComplete(LinksUpdate)
#5 /srv/mediawiki/php-1.36.0-wmf.21/includes/HookContainer/HookContainer.php(163): Wikibase\Client\Hooks\DataUpdateHookHandler->onLinksUpdateComplete(LinksUpdate, integer)
#6 /srv/mediawiki/php-1.36.0-wmf.21/includes/HookContainer/HookRunner.php(2376): MediaWiki\HookContainer\HookContainer->run(string, array)
#7 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/LinksUpdate.php(203): MediaWiki\HookContainer\HookRunner->onLinksUpdateComplete(LinksUpdate, integer)
#8 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/AutoCommitUpdate.php(44): LinksUpdate->{closure}(Wikimedia\Rdbms\MaintainableDBConnRef, string)
#9 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/DeferredUpdates.php(467): AutoCommitUpdate->doUpdate()
#10 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/DeferredUpdates.php(344): DeferredUpdates::attemptUpdate(AutoCommitUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#11 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/DeferredUpdates.php(288): DeferredUpdates::run(AutoCommitUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#12 /srv/mediawiki/php-1.36.0-wmf.21/includes/deferred/DeferredUpdates.php(194): DeferredUpdates::handleUpdateQueue(array, string, integer)
#13 /srv/mediawiki/php-1.36.0-wmf.21/includes/MediaWiki.php(1118): DeferredUpdates::doUpdates(string)
#14 /srv/mediawiki/php-1.36.0-wmf.21/includes/MediaWiki.php(854): MediaWiki->restInPeace()
#15 /srv/mediawiki/php-1.36.0-wmf.21/includes/MediaWiki.php(866): MediaWiki->{closure}()
#16 /srv/mediawiki/php-1.36.0-wmf.21/api.php(125): MediaWiki->doPostOutputShutdown()
#17 /srv/mediawiki/php-1.36.0-wmf.21/api.php(45): wfApiMain()
#18 /srv/mediawiki/w/api.php(3): require(string)
#19 {main}

Sometimes, as above, the stack trace ends in the API, sometimes it’s a job.

I’m still confused where these IDs come from. I thought it might be from LinksDeletionUpdate, which is a subclass of LinksUpdate and probably runs the same hook, but the stack trace shows that’s not the case:

#4 /srv/mediawiki/php-1.36.0-wmf.21/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandler.php(124): Wikibase\Client\Hooks\DataUpdateHookHandler->doLinksUpdateComplete(LinksUpdate)
#5 /srv/mediawiki/php-1.36.0-wmf.21/includes/HookContainer/HookContainer.php(163): Wikibase\Client\Hooks\DataUpdateHookHandler->onLinksUpdateComplete(LinksUpdate, integer)

These methods are being called with an instance of LinksUpdate, not LinksDeletionUpdate, unless I’m misunderstanding how PHP formats stack traces.

However, while looking through the LinksUpdate/LinksDeletionUpdate code, I noticed the (parent) class has an mId member, which I guess we want to use instead of ->getTitle()->getArticleId() – the mId looks like it’s more stable. (There’s no getter for mId, but the field itself is public, and the stable interface policy says it’s stable to access public class fields.)

Change 649361 had a related patch set uploaded (by Lucas Werkmeister (WMDE); owner: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@master] Use LinksUpdate::$mId in hook handler

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

Change 649362 had a related patch set uploaded (by Lucas Werkmeister (WMDE); owner: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@master] Skip 0 page ID in hook handler

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

Change 649361 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] Use LinksUpdate::$mId in hook handler

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

Change 649362 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] Skip 0 page ID in hook handler

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

So the new logging should be deployed by now. Logstash has no more occurrences of the old log message since January 3rd, which makes sense. It also has no occurrences at all of the new log message, which makes some sense, since the new message is at “info” level, which IIUC doesn’t go to Logstash. (The old message is at “warning” level.) But the new message also isn’t found on mwlog1001, where “info” messages are included as far as I can tell:

lucaswerkmeister-wmde@mwlog1001:~$ zgrep T264929 /srv/mw-log{/archive,}/Wikibase.log*
/srv/mw-log/archive/Wikibase.log-20201208.gz:2020-12-07 19:41:49 [X86FeApAMOEAADvkL3wAAABF] mw1383 enwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201208.gz:2020-12-08 06:11:37 [X88ZGQpAEDYAAIdy0DMAAACI] mw1289 dewiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 01:18:04 [X9F3SgpAAK4AAK4GYAgAAAAU] mw1312 arwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 01:53:20 [X9F-jgpAMOEAAR0ByH4AAAED] mw1383 arwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 01:54:02 [X9F-uApAMNwAAr89DUEAAABG] mw1378 arwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 01:54:28 [X9F-0gpAMMsAAhPn6v8AAACC] mw1361 arwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 01:54:53 [X9F-6wpAMMcAAxEEaJ4AAAER] mw1357 arwiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201210.gz:2020-12-10 06:08:44 [X9G7bApAAEgAAIISUzMAAABR] mw1277 dewiki 1.36.0-wmf.20 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201212.gz:2020-12-12 03:17:38 [X9Q1ugpAAEUAAJYMkXUAAAAB] mw1298 ptwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201214.gz:2020-12-13 20:10:23 [X9Z1KgpAEDYAAAoAZ7kAAABX] mw1289 enwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:16:41 [X9jhZwpAIDkAAL7FczQAAAAU] mw1345 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:16:48 [X9jhbgpAIDkAABKScUYAAADE] mw1345 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:17:24 [X9jhkQpAMN0AAkDDz0gAAABK] mw1379 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:17:38 [X9jhnwpAMN0AAkDD00MAAABS] mw1379 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:18:16 [X9jhxQpAMNsAACQMuL4AAACT] mw1377 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:18:22 [X9jhywpAEMMAACkulgMAAABF] mw1314 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:18:30 [X9jh0wpAEKEAAq0bPhQAAAEJ] mw1400 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:19:14 [X9jh-wpAEMMAAGqEtN8AAADL] mw1314 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:19:24 [X9jiCQpAEKYAAdn7d58AAACX] mw1402 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:20:37 [X9jiUgpAMMYAALqfLvQAAACK] mw1356 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:21:00 [X9jiaQpAEJ8AAg312PYAAAFU] mw1398 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:21:05 [X9jibgpAMN8AAHTNscQAAAEA] mw1381 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:21:21 [X9jifgpAMMcAAX-a3JoAAAAV] mw1357 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:21:33 [X9jiiwpAMOAABB@3exwAAAAM] mw1382 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:21:52 [X9jinQpAMOAABB@3gGEAAAAS] mw1382 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:22:15 [X9jitApAMOAABB@3hfcAAAAS] mw1382 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-15 16:54:31 [X9jqRQpAICwAADLlAMsAAAEK] mw1323 svwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201216.gz:2020-12-16 06:00:43 [X9miiwpAEJ8AAmKKe6IAAABH] mw1398 dewiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201218.gz:2020-12-17 14:52:56 [c1387c24d5cb4ea302f5f230] mw1336 arwiki 1.36.0-wmf.21 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201228.gz:2020-12-27 11:28:21 [b9e96648c955f93cee297a7e] mw1318 ruwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201230.gz:2020-12-29 17:18:48 [X@tk0QpAAL0AAVWj2mkAAAAE] mw1385 commonswiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201230.gz:2020-12-29 17:31:14 [X@tnzgpAAEAAACrFYrwAAAAI] mw1269 commonswiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:15:24 [X@z7@gpAMMgAAHBNRscAAADD] mw1358 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:18:04 [X@z8lwpAIDgAAFKT1goAAAEV] mw1344 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:18:35 [X@z8uApAEDcAAIhR1ZMAAABB] mw1290 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:20:08 [X@z9FgpAEDUAAD3ZfBQAAAAH] mw1288 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:20:34 [X@z9LgpAEDYAAIaP8o4AAAAL] mw1289 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-30 22:20:55 [X@z9QgpAMOEAAP43XmkAAACP] mw1383 arwiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20201231.gz:2020-12-31 06:03:08 [X@1pmQpAMN0AAAhES@8AAABE] mw1379 commonswiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20210103.gz:2021-01-02 14:00:11 [X-B8agpAIDgAAKUX6Z8AAAAI] mw1344 dewiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20210103.gz:2021-01-03 06:11:20 [X-FgBgpAMN0AAGpdFcIAAADH] mw1379 dewiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20210103.gz:2021-01-03 06:18:44 [X-FhwgpAAK4AADEN59AAAAEO] mw1312 dewiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
/srv/mw-log/archive/Wikibase.log-20210103.gz:2021-01-03 06:37:07 [X-FmEApAEDYAADeQiQ8AAAAE] mw1289 dewiki 1.36.0-wmf.22 Wikibase WARNING: Wikibase\Client\Usage\Sql\EntityUsageTable::makeUsageRows: skipping invalid page ID 0 (T264929) {"pageId":0} 
lucaswerkmeister-wmde@mwlog1001:~$ zgrep INFO /srv/mw-log{/archive,}/Wikibase.log* | wc -l
45753

My best explanation for this is that using LinksUpdate::$mId actually solved the issue, and that’s why we’re not seeing any log messages about page ID 0 anymore…? Moving back to Peer Review for others to look at.

If that’s true (Noa thought it sounded sensible), then the only thing left to do would be to remove some of the logging we added here. (You can find the log messages by searching for T264929 in the source code.)

  • The “info” message in DataUpdateHookHandler I would keep, since it doesn’t hurt and (due to the low level) doesn’t clutter logstash either, even if it starts happening again.
  • I’m less sure about the “warning” message in EntityUsageTable. I’m tempted to turn that case back into an exception, like it was at the beginning of this task. But maybe that’s not a good idea? After all, in both cases, there’s a sensible “default” action (when writing entity usages: produce empty array of usage rows for page ID 0; when reading entity usages: skip rows with page ID 0), and warnings already go to logstash – do we gain anything from turning the warning into an error? I guess uncaught errors are still more visible than warnings in logstash, but is that worth the cost of aborting the current request / job?

Thoughts?

noarave subscribed.

Moving to test (verification) as there are no objections from within the campsite to the comment above therefore no further work is required here.

Change 672662 had a related patch set uploaded (by Tobias Andersson; owner: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@REL1_35] Use LinksUpdate::$mId in hook handler

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

Change 672663 had a related patch set uploaded (by Tobias Andersson; owner: Lucas Werkmeister (WMDE)):
[mediawiki/extensions/Wikibase@REL1_35] Skip 0 page ID in hook handler

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

Change 672662 merged by Tobias Andersson:
[mediawiki/extensions/Wikibase@REL1_35] Use LinksUpdate::$mId in hook handler

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

Change 672663 merged by Tobias Andersson:
[mediawiki/extensions/Wikibase@REL1_35] Skip 0 page ID in hook handler

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