Page MenuHomePhabricator

PHP Notice: Array to string conversion (WikibaseRepo.DataValueDeserializer service wiring)
Closed, ResolvedPublicPRODUCTION ERROR

Description

Someone’s making wbformatvalue API requests with a datavalue parameter that decodes to {"value":{"id":{"isTrusted":true}},"type":"wikibase-entityid"}; this causes a PHP notice here:

WikibaseRepo.ServiceWiring.php 'WikibaseRepo.DataValueDeserializer'
throw new InvalidArgumentException(
	'Can not parse id \'' . $value['id'] . '\' to build EntityIdValue with',
	0,
	$parsingException
);
Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Array to string conversion
exception.trace
from /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(507)
#0 /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/repo/WikibaseRepo.ServiceWiring.php(507): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.41.0-wmf.4/vendor/data-values/serialization/src/Deserializers/DataValueDeserializer.php(122): Wikimedia\Services\ServiceContainer::{closure}(array)
#2 /srv/mediawiki/php-1.41.0-wmf.4/vendor/data-values/serialization/src/Deserializers/DataValueDeserializer.php(91): DataValues\Deserializers\DataValueDeserializer->getDeserialization(array)
#3 /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/lib/includes/DataValueFactory.php(44): DataValues\Deserializers\DataValueDeserializer->deserialize(array)
#4 /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/lib/includes/DataValueFactory.php(75): Wikibase\Lib\DataValueFactory->newDataValue(string, array)
#5 /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/repo/includes/Api/FormatSnakValue.php(248): Wikibase\Lib\DataValueFactory->newFromArray(array)
#6 /srv/mediawiki/php-1.41.0-wmf.4/extensions/Wikibase/repo/includes/Api/FormatSnakValue.php(143): Wikibase\Repo\Api\FormatSnakValue->decodeDataValue(string)
#7 /srv/mediawiki/php-1.41.0-wmf.4/includes/api/ApiMain.php(1908): Wikibase\Repo\Api\FormatSnakValue->execute()
#8 /srv/mediawiki/php-1.41.0-wmf.4/includes/api/ApiMain.php(884): ApiMain->executeAction()
#9 /srv/mediawiki/php-1.41.0-wmf.4/includes/api/ApiMain.php(855): ApiMain->executeActionWithErrorHandling()
#10 /srv/mediawiki/php-1.41.0-wmf.4/api.php(91): ApiMain->execute()
#11 /srv/mediawiki/php-1.41.0-wmf.4/api.php(46): wfApiMain()
#12 /srv/mediawiki/w/api.php(3): require(string)
#13 {main}
Impact

Minor logspam. No user impact.

Notes

Details

Request URL
https://www.wikidata.org/w/api.php?action=wbformatvalue&datatype=*&datavalue=*&errorformat=*&format=*&generate=*&options=*&uselang=*

Event Timeline

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

[mediawiki/extensions/Wikibase@master] Avoid array to string conversion in DataValueDeserializer

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

Change 908797 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Avoid array to string conversion in DataValueDeserializer

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

Looks like the fix works on Test Wikidata, I think that’s enough to close this task. It’ll roll out with the train over the rest of the week.