Page MenuHomePhabricator

ApiUploadVideoTest::testUploadVideoFiles fails in Wikibase CI (AccountCreationLogger: Error: Call to a member function getDBkey() on null)
Closed, ResolvedPublic

Description

Gate-and-submit for this change failed in three different builds in the same way:

1) ApiUploadVideoTest::testUploadVideoFiles with data set #0 (array('application/ogg', '/workspace/src/extensions/Tim...00.ogv', 301477, 400, 300, 'VIDEO', 449642, 30))
Error: Call to a member function getDBkey() on null

/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:50
/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:101
/workspace/src/extensions/WikimediaEvents/includes/WikimediaEventsHooks.php:90
/workspace/src/includes/HookContainer/HookContainer.php:159
/workspace/src/includes/HookContainer/HookRunner.php:893
/workspace/src/includes/auth/AuthManager.php:851
/workspace/src/includes/auth/AuthManager.php:501
/workspace/src/includes/api/ApiLogin.php:178
/workspace/src/includes/api/ApiMain.php:1952
/workspace/src/includes/api/ApiMain.php:897
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:183
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:92
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:103
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiUploadVideoTest.php:26
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:335
phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details

2) ApiUploadVideoTest::testUploadVideoFiles with data set #1 (array('video/webm', '/workspace/src/extensions/Tim...8.webm', 699018, 1080, 608, 'VIDEO', 522142, 29.97))
Error: Call to a member function getDBkey() on null

/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:50
/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:101
/workspace/src/extensions/WikimediaEvents/includes/WikimediaEventsHooks.php:90
/workspace/src/includes/HookContainer/HookContainer.php:159
/workspace/src/includes/HookContainer/HookRunner.php:893
/workspace/src/includes/auth/AuthManager.php:851
/workspace/src/includes/auth/AuthManager.php:501
/workspace/src/includes/api/ApiLogin.php:178
/workspace/src/includes/api/ApiMain.php:1952
/workspace/src/includes/api/ApiMain.php:897
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:183
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:92
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:103
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiUploadVideoTest.php:26
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:335
phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106
Logs generated by test

Show Details

3) ApiUploadVideoTest::testUploadVideoFiles with data set #2 (array('audio/midi', '/workspace/src/extensions/Tim...r.midi', 262, 'AUDIO'))
Error: Call to a member function getDBkey() on null

/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:50
/workspace/src/extensions/WikimediaEvents/includes/AccountCreationLogger.php:101
/workspace/src/extensions/WikimediaEvents/includes/WikimediaEventsHooks.php:90
/workspace/src/includes/HookContainer/HookContainer.php:159
/workspace/src/includes/HookContainer/HookRunner.php:893
/workspace/src/includes/auth/AuthManager.php:851
/workspace/src/includes/auth/AuthManager.php:501
/workspace/src/includes/api/ApiLogin.php:178
/workspace/src/includes/api/ApiMain.php:1952
/workspace/src/includes/api/ApiMain.php:897
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:183
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:92
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiVideoUploadTestCase.php:103
/workspace/src/extensions/TimedMediaHandler/tests/phpunit/ApiUploadVideoTest.php:26
/workspace/src/tests/phpunit/includes/api/ApiTestCase.php:335
phpvfscomposer:///workspace/src/vendor/phpunit/phpunit/phpunit:106

Event Timeline

Neither WikimediaEvents nor TimedMediaHandler have any very recent Gerrit changes that feel like they could be related, but I think the just-merged core change Clear $wgTitle state before suite runs could be the cause? The WikimediaEvents code does look like it could end up accessing $wgTitle under the hood:

$title = RequestContext::getMain()->getTitle();
$additionalData = [
	'page_title' => $title->getDBkey(), // <!-- Error: Call to a member function getDBkey() on null
	'page_namespace' => $title->getNamespace(),
];

After enabling both extensions locally, I can reproduce the issue, and reverting “Clear $wgTitle…” does not fix it. So it’s not that after all, apparently.

Reverting WikimediaEvents’ Track impressions, success and failure on the Special:CreateAccount and Special:Login pages. locally does fix the issue. (That commit is already “credited” with having caused T365403 too.)

Change #1035423 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/WikimediaEvents@master] Tolerate missing Title in AccountCreationLogger

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

The timing is still strange, because “Track impressions, success…” was already merged 2 days ago whereas we’ve still had successful Wikibase merges today.

Change #1035423 merged by jenkins-bot:

[mediawiki/extensions/WikimediaEvents@master] Tolerate missing Title in AccountCreationLogger

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

Lucas_Werkmeister_WMDE claimed this task.

CI issue is resolved; if there was anything wrong with my fix from WikimediaEvents’ perspective, please let me know / reopen the task :)