Some times, constructing a LinksUpdate fails with the error "The Title object yields no ID. Perhaps the page [[SomePageName]] doesn't exist?" This may be due to a race condition: LinksUpdate is a DeferredUpdate and typically executed after transactions have been committed and the response has been sent . If the page was moved or deleted in the meantime, the title will not be found, triggering this errors.
While LinksUpdate should probably be changed to log a warning rather than fail hard, it is curious that we see spikes of dozens or even over a hundred of these for the same page, within a second or two.
For example, on Apr 28, 2021 @ 19:04:11, "The Title object yields no ID. Perhaps the page [[Michael_Collins_(astronaut)]] doesn't exist?" was hit 232 times on hiwiki, within the space for six seconds on hiwiki. These are all from the //same// request to index.php with action=submit: reqId=34d83e10-a81a-44e5-8a29-e9c818835951.
Similarly, on Apr 7, 2021 @ 16:13:16, we hit "The Title object yields no ID. Perhaps the page [[Benutzer:Tobiasi0/List_of_Red_Dead_Redemption_2_characters]] doesn't exist?" on dewiki 114 times in 3 seconds, this time coming in via api.php
It seems like DeferredUpdates is re-trying failed updates within the same request at a high rate in some cases.
Sample stack trace:
```
from /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/LinksUpdate.php(140)
#0 /srv/mediawiki/php-1.36.0-wmf.37/includes/Storage/DerivedPageDataUpdater.php(1385): LinksUpdate->__construct(Title, ParserOutput, boolean)
#1 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/RefreshSecondaryDataUpdate.php(83): MediaWiki\Storage\DerivedPageDataUpdater->getSecondaryDataUpdates(boolean)
#2 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdates.php(513): RefreshSecondaryDataUpdate->doUpdate()
#3 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdates.php(390): DeferredUpdates::attemptUpdate(RefreshSecondaryDataUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#4 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdates.php(221): DeferredUpdates::run(RefreshSecondaryDataUpdate, Wikimedia\Rdbms\LBFactoryMulti, Monolog\Logger, BufferingStatsdDataFactory, string)
#5 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdatesScope.php(264): DeferredUpdates::{closure}(RefreshSecondaryDataUpdate, integer)
#6 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#7 /srv/mediawiki/php-1.36.0-wmf.37/includes/deferred/DeferredUpdates.php(242): DeferredUpdatesScope->processUpdates(integer, Closure)
#8 /srv/mediawiki/php-1.36.0-wmf.37/includes/MediaWiki.php(1093): DeferredUpdates::doUpdates(string)
#9 /srv/mediawiki/php-1.36.0-wmf.37/includes/MediaWiki.php(821): MediaWiki->restInPeace()
#10 /srv/mediawiki/php-1.36.0-wmf.37/includes/MediaWiki.php(833): MediaWiki->{closure}()
#11 /srv/mediawiki/php-1.36.0-wmf.37/api.php(125): MediaWiki->doPostOutputShutdown()
#12 /srv/mediawiki/php-1.36.0-wmf.37/api.php(45): wfApiMain()
#13 /srv/mediawiki/w/api.php(3): require(string)
#14 {main}
```