Page MenuHomePhabricator

PHP Notice: Undefined property: Wikibase\DataModel\Term\TermList::$Ø
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error

MediaWiki version: 1.35.0-wmf.23

message
PHP Notice: Undefined property: Wikibase\DataModel\Term\TermList::$Ø

Impact

I have no idea! :)

Notes

Details

Request ID
XnJU4wpAMMwABACTHXUAAADG
Request URL
https://www.wikidata.org/w/api.php
Stack Trace
exception.trace
#0 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Term/TermList.php(153): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Term/Fingerprint.php(239): Wikibase\DataModel\Term\TermList->equals(Wikibase\DataModel\Term\TermList)
#2 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Entity/Item.php(324): Wikibase\DataModel\Term\Fingerprint->equals(Wikibase\DataModel\Term\Fingerprint)
#3 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Content/EntityContent.php(480): Wikibase\DataModel\Entity\Item->equals(Wikibase\DataModel\Entity\Item)
#4 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Store/Sql/WikiPageEntityStore.php(338): Wikibase\EntityContent->equals(Wikibase\ItemContent)
#5 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Store/Sql/WikiPageEntityStore.php(234): Wikibase\Repo\Store\Sql\WikiPageEntityStore->saveEntityContent(Wikibase\ItemContent, User, string, integer, integer, array)
#6 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/lib/includes/Store/TypeDispatchingEntityStore.php(90): Wikibase\Repo\Store\Sql\WikiPageEntityStore->saveEntity(Wikibase\DataModel\Entity\Item, string, User, integer, integer, array)
#7 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/StatsdSaveTimeRecordingEntityStore.php(50): Wikibase\Lib\Store\TypeDispatchingEntityStore->saveEntity(Wikibase\DataModel\Entity\Item, string, User, integer, integer, array)
#8 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(728): Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEntityStore->saveEntity(Wikibase\DataModel\Entity\Item, string, User, integer, integer, array)
#9 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/StatsdSaveTimeRecordingEditEntity.php(74): Wikibase\Repo\EditEntity\MediawikiEditEntity->attemptSave(Wikibase\DataModel\Entity\Item, string, integer, string, boolean, array)
#10 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Api/EntitySavingHelper.php(366): Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity->attemptSave(Wikibase\DataModel\Entity\Item, string, integer, string, NULL, array)
#11 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(323): Wikibase\Repo\Api\EntitySavingHelper->attemptSaveEntity(Wikibase\DataModel\Entity\Item, string)
#12 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(1590): Wikibase\Repo\Api\ModifyEntity->execute()
#13 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(522): ApiMain->executeAction()
#14 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(493): ApiMain->executeActionWithErrorHandling()
#15 /srv/mediawiki/php-1.35.0-wmf.23/api.php(84): ApiMain->execute()
#16 /srv/mediawiki/w/api.php(3): require(string)
#17 {main}

Which seems to come in a pair with:

/srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Term/TermList.php:153
PHP Warning: Invalid argument supplied for foreach()
 #0 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Term/TermList.php(153): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Term/Fingerprint.php(239): Wikibase\DataModel\Term\TermList->equals(Wikibase\DataModel\Term\TermList)
#2 /srv/mediawiki/php-1.35.0-wmf.23/vendor/wikibase/data-model/src/Entity/Item.php(324): Wikibase\DataModel\Term\Fingerprint->equals(Wikibase\DataModel\Term\Fingerprint)
#3 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Content/EntityContent.php(480): Wikibase\DataModel\Entity\Item->equals(Wikibase\DataModel\Entity\Item)
#4 /srv/mediawiki/php-1.35.0-wmf.23/extensions/AbuseFilter/includes/VariableGenerator/RunVariableGenerator.php(103): Wikibase\EntityContent->equals(Wikibase\ItemContent)
#5 /srv/mediawiki/php-1.35.0-wmf.23/extensions/AbuseFilter/includes/VariableGenerator/RunVariableGenerator.php(169): MediaWiki\Extension\AbuseFilter\VariableGenerator\RunVariableGenerator->getEditTextForFiltering(WikiPage, Wikibase\ItemContent, string)
#6 /srv/mediawiki/php-1.35.0-wmf.23/extensions/AbuseFilter/includes/AbuseFilterHooks.php(154): MediaWiki\Extension\AbuseFilter\VariableGenerator\RunVariableGenerator->getEditVars(Wikibase\ItemContent, string, string, string, WikiPage)
#7 /srv/mediawiki/php-1.35.0-wmf.23/extensions/AbuseFilter/includes/AbuseFilterHooks.php(108): AbuseFilterHooks::filterEdit(DerivativeContext, Wikibase\ItemContent, string, string)
#8 /srv/mediawiki/php-1.35.0-wmf.23/includes/Hooks.php(174): AbuseFilterHooks::onEditFilterMergedContent(DerivativeContext, Wikibase\ItemContent, Status, string, User, boolean, string)
#9 /srv/mediawiki/php-1.35.0-wmf.23/includes/Hooks.php(202): Hooks::callHook(string, array, array, NULL)
#10 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditFilterHookRunner.php(115): Hooks::run(string, array)
#11 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/StatsdTimeRecordingEditFilterHookRunner.php(44): Wikibase\Repo\EditEntity\MediawikiEditFilterHookRunner->run(Wikibase\DataModel\Entity\Item, User, string)
#12 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/MediawikiEditEntity.php(705): Wikibase\Repo\EditEntity\StatsdTimeRecordingEditFilterHookRunner->run(Wikibase\DataModel\Entity\Item, User, string)
#13 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/EditEntity/StatsdSaveTimeRecordingEditEntity.php(74): Wikibase\Repo\EditEntity\MediawikiEditEntity->attemptSave(Wikibase\DataModel\Entity\Item, string, integer, string, boolean, array)
#14 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Api/EntitySavingHelper.php(366): Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity->attemptSave(Wikibase\DataModel\Entity\Item, string, integer, string, NULL, array)
#15 /srv/mediawiki/php-1.35.0-wmf.23/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(323): Wikibase\Repo\Api\EntitySavingHelper->attemptSaveEntity(Wikibase\DataModel\Entity\Item, string)
#16 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(1590): Wikibase\Repo\Api\ModifyEntity->execute()
#17 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(522): ApiMain->executeAction()
#18 /srv/mediawiki/php-1.35.0-wmf.23/includes/api/ApiMain.php(493): ApiMain->executeActionWithErrorHandling()
#19 /srv/mediawiki/php-1.35.0-wmf.23/api.php(84): ApiMain->execute()
#20 /srv/mediawiki/w/api.php(3): require(string)
#21 {main}

Event Timeline

Jdforrester-WMF triaged this task as Unbreak Now! priority.Mar 18 2020, 6:30 PM
Jdforrester-WMF lowered the priority of this task from Unbreak Now! to Needs Triage.Mar 18 2020, 7:39 PM
Jdforrester-WMF subscribed.

Not a train blocker (as it's an existing issue), so re-setting priority for the Wikidata team to triage.

hashar triaged this task as High priority.Mar 18 2020, 7:39 PM

I have removed this task from the list of train blocker since it comes from 1.35.0-wmf.23 which is now fully deployed. We should still get it fixed since that error is really cumbersome :]

This code relates to the termbox layer of Wikibase which has recently changed and is now receiving more traffic into a new previouly unexposed codepath. It is indeed not new in the train, but it is newly deployed.

Given it seems deterministic I suspect it might not be opcache corruption this time, as those tend to generate many different errors and rarely in the same class twice, much less the exact same way twice.

@Ladsgroup Can you(r team) determine the impact of this array being undefined without a fatal error? Does it propagate to other things in the system and/or to end users in a bad way?

funnily enough, this stopped happening since we rolled wmf.24. I don't know what caused it and don't have time to check it right now but will do once I'm done with other stuff.

I'm trying to see what has caused it but I don't have more info on the requests. I tried merging these with hadoop data and got this:

select * from event.mediawiki_api_request where year = 2020 and month = 3 and day = 19 and hour = 07 and meta.dt like '2020-03-19T07:56:1%' and meta.domain = "www.wikidata.org" and http.method = 'POST' and meta.request_id = 'XnMlnQpAMMwAAp3cvLgAAAAF' limit 5

_schema	meta	http	database	backend_time_ms	api_error_codes	params	datacenter	year	month	day	hour
NULL	{"uri":null,"request_id":"XnMlnQpAMMwAAp3cvLgAAAAF","id":"90b4df94-cc60-4698-ab9e-64441e7ad0b4","dt":"2020-03-19T07:56:13Z","domain":"www.wikidata.org","stream":"mediawiki.api-request"}	{"method":"POST","client_ip":"<reducted>","request_headers":{"user-agent":"<reducted>"}}	wikidatawiki	219["failed-save","editconflict"]	{"assert":"user","format":"json","data":"{\"labels\": {\"nl\": {\"language\": \"nl\", \"value\": \"Phineas Bury\"}}}","baserevid":"1076837819","id":"Q75859808","token":"[redacted]","bot":"1","maxlag":"5","action":"wbeditentity","summary":"nl-description, [[User:Edoderoobot/Set-nl-description|python code]] - person"}	eqiad	2020	3	19	7
1 row selected (40.217 seconds)

It's weird that it returned edit-failed with edit conflict but there's an exact edit: https://www.wikidata.org/w/index.php?title=Q75859808&diff=1138330913&oldid=1076837819

Maybe two exact edits happened together by the same user and the second one failed (it would explain this weird path it's hitting, it's trying to diff and patch the same thing). Can Amir unravel this mystery? Stay Tuned!

I reproduced the error in response (edit-conflict) by doing the exact same request but this still not appearing in logstash. I think something wmf.24 fixed it but I can't say for sure. I close this is resolved but if it's resurfaced, re-open it please.

Thank you for the investigation!