Page MenuHomePhabricator

EditCount.php hasn't completed Actor Migration for revision_actor_temp table
Closed, ResolvedPublic

Description

While deleting a page with EditCount of this extension enabled, following error occurs:

[3c973832d5939dd9502e1b83] /index.php?title=1210&action=delete Wikimedia\Rdbms\DBQueryError: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading or after adding a new extension?

Please see https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading and https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:How_to_debug for more information.

Error 1146: Table 'files_lakejason0.revision_actor_temp' doesn't exist
Function: removeDeletedEdits
Query: SELECT COUNT(*) AS the_count,revactor_actor FROM `revision` JOIN `revision_actor_temp` ON ((revactor_rev = rev_id)) JOIN `actor` ON ((actor_id = revactor_actor)) WHERE revactor_page = 3021 AND (actor_user IS NOT NULL) GROUP BY actor_name

Backtrace:

from /www/wwwroot/podcast/includes/libs/rdbms/database/Database.php(1618)
#0 /www/wwwroot/podcast/includes/libs/rdbms/database/Database.php(1602): Wikimedia\Rdbms\Database->getQueryException()
#1 /www/wwwroot/podcast/includes/libs/rdbms/database/Database.php(1576): Wikimedia\Rdbms\Database->getQueryExceptionAndLog()
#2 /www/wwwroot/podcast/includes/libs/rdbms/database/Database.php(952): Wikimedia\Rdbms\Database->reportQueryError()
#3 /www/wwwroot/podcast/includes/libs/rdbms/database/Database.php(1711): Wikimedia\Rdbms\Database->query()
#4 /www/wwwroot/podcast/includes/libs/rdbms/database/DBConnRef.php(103): Wikimedia\Rdbms\Database->select()
#5 /www/wwwroot/podcast/includes/libs/rdbms/database/DBConnRef.php(326): Wikimedia\Rdbms\DBConnRef->__call()
#6 /www/wwwroot/podcast/extensions/SocialProfile/UserStats/EditCount.php(79): Wikimedia\Rdbms\DBConnRef->select()
#7 /www/wwwroot/podcast/includes/HookContainer/HookContainer.php(338): removeDeletedEdits()
#8 /www/wwwroot/podcast/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook()
#9 /www/wwwroot/podcast/includes/HookContainer/HookRunner.php(708): MediaWiki\HookContainer\HookContainer->run()
#10 /www/wwwroot/podcast/includes/page/DeletePage.php(503): MediaWiki\HookContainer\HookRunner->onArticleDelete()
#11 /www/wwwroot/podcast/includes/page/DeletePage.php(467): MediaWiki\Page\DeletePage->runPreDeleteHooks()
#12 /www/wwwroot/podcast/includes/page/DeletePage.php(383): MediaWiki\Page\DeletePage->deleteUnsafe()
#13 /www/wwwroot/podcast/includes/actions/DeleteAction.php(160): MediaWiki\Page\DeletePage->deleteIfAllowed()
#14 /www/wwwroot/podcast/includes/actions/DeleteAction.php(112): DeleteAction->tempDelete()
#15 /www/wwwroot/podcast/includes/MediaWiki.php(542): DeleteAction->show()
#16 /www/wwwroot/podcast/includes/MediaWiki.php(322): MediaWiki->performAction()
#17 /www/wwwroot/podcast/includes/MediaWiki.php(904): MediaWiki->performRequest()
#18 /www/wwwroot/podcast/includes/MediaWiki.php(562): MediaWiki->main()
#19 /www/wwwroot/podcast/index.php(50): MediaWiki->run()
#20 /www/wwwroot/podcast/index.php(46): wfIndexMain()
#21 {main}

while searching for the code, this place is still using the temp table:
SocialProfile/UserStats/EditCount,php, line 59+:

function removeDeletedEdits( WikiPage $article, $user, $reason ) {
	global $wgNamespacesForEditPoints;

	// only keep tally for allowable namespaces
	if (
		!is_array( $wgNamespacesForEditPoints ) ||
		in_array( $article->getTitle()->getNamespace(), $wgNamespacesForEditPoints )
	) {
		$dbr = wfGetDB( DB_MASTER );

		$res = $dbr->select(
			[ 'revision_actor_temp', 'revision', 'actor' ],
			[ 'COUNT(*) AS the_count', 'revactor_actor' ],
			[
				'revactor_page' => $article->getID(),
				'actor_user IS NOT NULL'
			],
			__METHOD__,
			[ 'GROUP BY' => 'actor_name' ],
			[
				'actor' => [ 'JOIN', 'actor_id = revactor_actor' ],
				'revision_actor_temp' => [ 'JOIN', 'revactor_rev = rev_id' ]
			]
		);

		foreach ( $res as $row ) {
			$stats = new UserStatsTrack( $row->revactor_actor );
			$stats->decStatField( 'edit', $row->the_count );
		}
	}

	return true;
}

See how revision_actor_temp still exists.

Event Timeline

Oh never mind, seems like I need an upgrade on my side?