Split from T239083. If you try to undelete a "large" amount of revisions (3000 is enough), some long-running queries will be issued, and you'll eventually receive an exception.
Within a single request (reqId XduuIQpAADwAAJaE08EAAAAU), I see the following violation reports:
Expectation (readQueryTime <= 5) by MediaWiki::main not met (actual: 6.8106288909912): query-m: ROLLBACK [TRX#ef2a27] #0 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/TransactionProfiler.php(252): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated('readQueryTime', Object(Wikimedia\Rdbms\GeneralizedSql), 6.8106288909912) #1 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(1344): Wikimedia\Rdbms\TransactionProfiler->recordQueryCompletion(Object(Wikimedia\Rdbms\GeneralizedSql), 1574678092.4671, false, 0) #2 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(1226): Wikimedia\Rdbms\Database->executeQueryAttempt('ROLLBACK', 'ROLLBACK /* MWE...', false, 'MWExceptionHand...', 1) #3 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(1162): Wikimedia\Rdbms\Database->executeQuery('ROLLBACK', 'MWExceptionHand...', 1) #4 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(4206): Wikimedia\Rdbms\Database->query('ROLLBACK', 'MWExceptionHand...', 1) #5 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(4155): Wikimedia\Rdbms\Database->doRollback('MWExceptionHand...') #6 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1846): Wikimedia\Rdbms\Database->rollback('MWExceptionHand...', 'flush') #7 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(2144): Wikimedia\Rdbms\LoadBalancer->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\DatabaseMysqli)) #8 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1847): Wikimedia\Rdbms\LoadBalancer->forEachOpenMasterConnection(Object(Closure)) #9 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(211): Wikimedia\Rdbms\LoadBalancer->rollbackMasterChanges('MWExceptionHand...', 457720263) #10 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactoryMulti.php(241): Wikimedia\Rdbms\LBFactory->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\LoadBalancer), 'rollbackMasterC...', Array) #11 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(213): Wikimedia\Rdbms\LBFactoryMulti->forEachLB(Object(Closure), Array) #12 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(294): Wikimedia\Rdbms\LBFactory->forEachLBCallMethod('rollbackMasterC...', Array) #13 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(128): Wikimedia\Rdbms\LBFactory->rollbackMasterChanges('MWExceptionHand...') #14 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(176): MWExceptionHandler::rollbackMasterChangesAndLog(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #15 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(563): MWExceptionHandler::handleException(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #16 /srv/mediawiki/php-1.35.0-wmf.5/index.php(46): MediaWiki->run() #17 /srv/mediawiki/w/index.php(3): require('/srv/mediawiki/...') #18 {main}
Expectation (writeQueryTime <= 1) by MediaWiki::main not met (actual: 11.231251478195): [transaction ef2a27 writes to 10.64.48.34 (itwiki)] #0 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/TransactionProfiler.php(314): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated('writeQueryTime', '[transaction ef...', 11.231251478195) #1 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(4168): Wikimedia\Rdbms\TransactionProfiler->transactionWritingOut('10.64.48.34', 'itwiki', 'ef2a27', 11.231251478195, 4392) #2 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1846): Wikimedia\Rdbms\Database->rollback('MWExceptionHand...', 'flush') #3 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(2144): Wikimedia\Rdbms\LoadBalancer->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\DatabaseMysqli)) #4 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1847): Wikimedia\Rdbms\LoadBalancer->forEachOpenMasterConnection(Object(Closure)) #5 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(211): Wikimedia\Rdbms\LoadBalancer->rollbackMasterChanges('MWExceptionHand...', 457720263) #6 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactoryMulti.php(241): Wikimedia\Rdbms\LBFactory->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\LoadBalancer), 'rollbackMasterC...', Array) #7 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(213): Wikimedia\Rdbms\LBFactoryMulti->forEachLB(Object(Closure), Array) #8 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(294): Wikimedia\Rdbms\LBFactory->forEachLBCallMethod('rollbackMasterC...', Array) #9 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(128): Wikimedia\Rdbms\LBFactory->rollbackMasterChanges('MWExceptionHand...') #10 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(176): MWExceptionHandler::rollbackMasterChangesAndLog(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #11 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(563): MWExceptionHandler::handleException(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #12 /srv/mediawiki/php-1.35.0-wmf.5/index.php(46): MediaWiki->run() #13 /srv/mediawiki/w/index.php(3): require('/srv/mediawiki/...') #14 {main}
Expectation (maxAffected <= 1000) by MediaWiki::main not met (actual: 4392): [transaction ef2a27 writes to 10.64.48.34 (itwiki)] #0 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/TransactionProfiler.php(323): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated('maxAffected', '[transaction ef...', 4392) #1 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/database/Database.php(4168): Wikimedia\Rdbms\TransactionProfiler->transactionWritingOut('10.64.48.34', 'itwiki', 'ef2a27', 11.231251478195, 4392) #2 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1846): Wikimedia\Rdbms\Database->rollback('MWExceptionHand...', 'flush') #3 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(2144): Wikimedia\Rdbms\LoadBalancer->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\DatabaseMysqli)) #4 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1847): Wikimedia\Rdbms\LoadBalancer->forEachOpenMasterConnection(Object(Closure)) #5 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(211): Wikimedia\Rdbms\LoadBalancer->rollbackMasterChanges('MWExceptionHand...', 457720263) #6 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactoryMulti.php(241): Wikimedia\Rdbms\LBFactory->Wikimedia\Rdbms\{closure}(Object(Wikimedia\Rdbms\LoadBalancer), 'rollbackMasterC...', Array) #7 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(213): Wikimedia\Rdbms\LBFactoryMulti->forEachLB(Object(Closure), Array) #8 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(294): Wikimedia\Rdbms\LBFactory->forEachLBCallMethod('rollbackMasterC...', Array) #9 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(128): Wikimedia\Rdbms\LBFactory->rollbackMasterChanges('MWExceptionHand...') #10 /srv/mediawiki/php-1.35.0-wmf.5/includes/exception/MWExceptionHandler.php(176): MWExceptionHandler::rollbackMasterChangesAndLog(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #11 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(563): MWExceptionHandler::handleException(Object(Wikimedia\Rdbms\DBTransactionSizeError)) #12 /srv/mediawiki/php-1.35.0-wmf.5/index.php(46): MediaWiki->run() #13 /srv/mediawiki/w/index.php(3): require('/srv/mediawiki/...') #14 {main}
and finally an exception:
[XduuIQpAADwAAJaE08EAAAAU] /w/index.php?title=Speciale:Ripristina&action=submit Wikimedia\Rdbms\DBTransactionSizeError from line 1642 of /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php: Transaction spent 11.301734209061 second(s) in writes, exceeding the limit of 3
#0 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(2144): Wikimedia\Rdbms\LoadBalancer->Wikimedia\Rdbms\{closure}(Wikimedia\Rdbms\DatabaseMysqli) #1 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1656): Wikimedia\Rdbms\LoadBalancer->forEachOpenMasterConnection(Closure) #2 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(211): Wikimedia\Rdbms\LoadBalancer->approveMasterChanges(array, string, integer) #3 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactoryMulti.php(241): Wikimedia\Rdbms\LBFactory->Wikimedia\Rdbms\{closure}(Wikimedia\Rdbms\LoadBalancer, string, array) #4 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(213): Wikimedia\Rdbms\LBFactoryMulti->forEachLB(Closure, array) #5 /srv/mediawiki/php-1.35.0-wmf.5/includes/libs/rdbms/lbfactory/LBFactory.php(272): Wikimedia\Rdbms\LBFactory->forEachLBCallMethod(string, array) #6 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(664): Wikimedia\Rdbms\LBFactory->commitMasterChanges(string, array) #7 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(635): MediaWiki::preOutputCommit(RequestContext, Closure) #8 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(983): MediaWiki->doPreOutputCommit(Closure) #9 /srv/mediawiki/php-1.35.0-wmf.5/includes/MediaWiki.php(530): MediaWiki->main() #10 /srv/mediawiki/php-1.35.0-wmf.5/index.php(46): MediaWiki->run() #11 /srv/mediawiki/w/index.php(3): require(string) #12 {main}
Curiously, all of these errors seem to happen during the master rollback.
Page deletions happen in batches as of T198176, but AFAICS the same isn't true for undeletion.
Notes:
- This is probably the younger brother of T218712
- Undeletion is still possible by manual batching.
- I'm unsure whether this can be considered a production error
- Tentatively tagging CPT per previous work in this area, and Growth per mw:Developers/Maintainers