Page MenuHomePhabricator

Expected mass rollback of all peer transactions (DBO_TRX set)
Open, Needs TriagePublic

Description

Flow has some error handling code that looks like this:

try {
    // stuff
} catch ( \Exception $e ) {
    $state->rollback();
    \MWExceptionHandler::logException( $e );
}

When //stuff fails I get (on labs-vagrant, when using Special:EnableStructuredDiscussions to convert an existing page)

2018-06-14 12:05:53 mcr-full wiki: [0d80dda1d86880078da1e67b] /wiki/Special:EnableStructuredDiscussions   Wikimedia\Rdbms\DBUnexpectedError from line 3884 of /vagrant/mediawiki/includes/libs/rdbms/database/Database.php: Flow\Import\PageImportState::rollback: Expected mass rollback of all peer transactions (DBO_TRX set).
#0 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(416): Wikimedia\Rdbms\Database->rollback(string)
#1 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(598): Flow\Import\PageImportState->rollback()
#2 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(126): Flow\Import\TalkpageImportOperation->import(Flow\Import\PageImportState)
#3 /vagrant/mediawiki/extensions/Flow/includes/Import/Converter.php(187): Flow\Import\Importer->import(Flow\Import\Wikitext\ImportSource, Title, User, Flow\Import\SourceStore\NullImportSourceStore)
#4 /vagrant/mediawiki/extensions/Flow/includes/Import/Converter.php(138): Flow\Import\Converter->doConversion(Title, NULL)
#5 /vagrant/mediawiki/extensions/Flow/includes/Specials/SpecialEnableStructuredDiscussions.php(120): Flow\Import\Converter->convert(Title)
#6 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(662): Flow\Specials\SpecialEnableStructuredDiscussions->onSubmit(array, OOUIHTMLForm)
#7 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(554): HTMLForm->trySubmit()
#8 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(569): HTMLForm->tryAuthorizedSubmit()
#9 /vagrant/mediawiki/includes/specialpage/FormSpecialPage.php(184): HTMLForm->show()
#10 /vagrant/mediawiki/extensions/Flow/includes/Specials/SpecialEnableStructuredDiscussions.php(49): FormSpecialPage->execute(NULL)
#11 /vagrant/mediawiki/includes/specialpage/SpecialPage.php(565): Flow\Specials\SpecialEnableStructuredDiscussions->execute(NULL)
#12 /vagrant/mediawiki/includes/specialpage/SpecialPageFactory.php(569): SpecialPage->run(NULL)
#13 /vagrant/mediawiki/includes/MediaWiki.php(288): SpecialPageFactory::executePath(Title, RequestContext)
#14 /vagrant/mediawiki/includes/MediaWiki.php(867): MediaWiki->performRequest()
#15 /vagrant/mediawiki/includes/MediaWiki.php(524): MediaWiki->main()
#16 /vagrant/mediawiki/index.php(42): MediaWiki->run()
#17 /var/www/w/index.php(5): include(string)

which is not so helpful.

Not sure if this is a problem with Flow or the DB abstraction layer; ideally, though, logging would happen before rollback, and Database::rollback would be very conservative about throwing exceptions as they are likely to mess up error logging / recovery.

Event Timeline

Tgr created this task.Jun 14 2018, 12:20 PM
Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Tgr added a comment.Jun 14 2018, 12:28 PM

FWIW the original exception was

2018-06-14 12:22:38 mcr-full wiki: [a9d24b56be842208db86ddac] /wiki/Special:EnableStructuredDiscussions   Wikimedia\Rdbms\DBUnexpectedError from line 3754 of /vagrant/mediawiki/includes/libs/rdbms/database/Database.php: Flow\Import\PageImportState::begin: Implicit transaction already active (from Wikimedia\Rdbms\Database::query (User::idFromName)).
#0 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(406): Wikimedia\Rdbms\Database->begin(string)
#1 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(586): Flow\Import\PageImportState->begin()
#2 /vagrant/mediawiki/extensions/Flow/includes/Import/Importer.php(126): Flow\Import\TalkpageImportOperation->import(Flow\Import\PageImportState)
#3 /vagrant/mediawiki/extensions/Flow/includes/Import/Converter.php(187): Flow\Import\Importer->import(Flow\Import\Wikitext\ImportSource, Title, User, Flow\Import\SourceStore\NullImportSourceStore)
#4 /vagrant/mediawiki/extensions/Flow/includes/Import/Converter.php(138): Flow\Import\Converter->doConversion(Title, NULL)
#5 /vagrant/mediawiki/extensions/Flow/includes/Specials/SpecialEnableStructuredDiscussions.php(120): Flow\Import\Converter->convert(Title)
#6 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(662): Flow\Specials\SpecialEnableStructuredDiscussions->onSubmit(array, OOUIHTMLForm)
#7 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(554): HTMLForm->trySubmit()
#8 /vagrant/mediawiki/includes/htmlform/HTMLForm.php(569): HTMLForm->tryAuthorizedSubmit()
#9 /vagrant/mediawiki/includes/specialpage/FormSpecialPage.php(184): HTMLForm->show()
#10 /vagrant/mediawiki/extensions/Flow/includes/Specials/SpecialEnableStructuredDiscussions.php(49): FormSpecialPage->execute(NULL)
#11 /vagrant/mediawiki/includes/specialpage/SpecialPage.php(565): Flow\Specials\SpecialEnableStructuredDiscussions->execute(NULL)
#12 /vagrant/mediawiki/includes/specialpage/SpecialPageFactory.php(569): SpecialPage->run(NULL)
#13 /vagrant/mediawiki/includes/MediaWiki.php(288): SpecialPageFactory::executePath(Title, RequestContext)
#14 /vagrant/mediawiki/includes/MediaWiki.php(867): MediaWiki->performRequest()
#15 /vagrant/mediawiki/includes/MediaWiki.php(524): MediaWiki->main()
#16 /vagrant/mediawiki/index.php(42): MediaWiki->run()
#17 /var/www/w/index.php(5): include(string)
#18 {main}

Probably a case of using Database::begin instead of Database::startAtomic (see docs).

Tgr updated the task description. (Show Details)Jun 14 2018, 12:30 PM

I believe this is because it wants you to roll back all DBs at once, not just the Flow DB. We'll have to look at how this was done elsewhere.

Vvjjkkii renamed this task from Expected mass rollback of all peer transactions (DBO_TRX set) to l0aaaaaaaa.Jul 1 2018, 1:04 AM
Vvjjkkii triaged this task as High priority.
Vvjjkkii updated the task description. (Show Details)
Vvjjkkii removed a subscriber: Aklapper.
CommunityTechBot renamed this task from l0aaaaaaaa to Expected mass rollback of all peer transactions (DBO_TRX set).Jul 2 2018, 6:46 AM
CommunityTechBot raised the priority of this task from High to Needs Triage.
CommunityTechBot updated the task description. (Show Details)
CommunityTechBot added a subscriber: Aklapper.
Restricted Application added a project: Growth-Team. · View Herald TranscriptJul 28 2018, 10:35 PM