Error
- mwversion: 1.40.0-wmf.10
- reqId: 22a3d534-3cb8-447c-839c-553f8f029e29
- Find reqId in Logstash
[{reqId}] {exception_url} PHP Warning: Invalid argument supplied for foreach()
from /srv/mediawiki/php-1.40.0-wmf.10/extensions/WikibaseLexeme/src/Presentation/ChangeOp/Deserialization/SenseListChangeOpDeserializer.php(66) #0 /srv/mediawiki/php-1.40.0-wmf.10/extensions/WikibaseLexeme/src/Presentation/ChangeOp/Deserialization/SenseListChangeOpDeserializer.php(66): MWExceptionHandler::handleError(integer, string, string, integer, array) #1 /srv/mediawiki/php-1.40.0-wmf.10/extensions/WikibaseLexeme/src/Presentation/ChangeOp/Deserialization/LexemeChangeOpDeserializer.php(111): Wikibase\Lexeme\Presentation\ChangeOp\Deserialization\SenseListChangeOpDeserializer->createEntityChangeOp(array) #2 /srv/mediawiki/php-1.40.0-wmf.10/extensions/Wikibase/repo/includes/ChangeOp/EntityChangeOpProvider.php(52): Wikibase\Lexeme\Presentation\ChangeOp\Deserialization\LexemeChangeOpDeserializer->createEntityChangeOp(array) #3 /srv/mediawiki/php-1.40.0-wmf.10/extensions/Wikibase/repo/includes/Api/EditEntity.php(311): Wikibase\Repo\ChangeOp\EntityChangeOpProvider->newEntityChangeOp(string, array) #4 /srv/mediawiki/php-1.40.0-wmf.10/extensions/Wikibase/repo/includes/Api/ModifyEntity.php(318): Wikibase\Repo\Api\EditEntity->getChangeOp(array, Wikibase\Lexeme\Domain\Model\Lexeme) #5 /srv/mediawiki/php-1.40.0-wmf.10/includes/api/ApiMain.php(1902): Wikibase\Repo\Api\ModifyEntity->execute() #6 /srv/mediawiki/php-1.40.0-wmf.10/includes/api/ApiMain.php(877): ApiMain->executeAction() #7 /srv/mediawiki/php-1.40.0-wmf.10/includes/api/ApiMain.php(848): ApiMain->executeActionWithErrorHandling() #8 /srv/mediawiki/php-1.40.0-wmf.10/api.php(90): ApiMain->execute() #9 /srv/mediawiki/php-1.40.0-wmf.10/api.php(45): wfApiMain() #10 /srv/mediawiki/w/api.php(3): require(string) #11 {main}
Impact
Logstash warning for invalid request; no other issues, I think.
Notes
I randomly noticed this in Logstash – it’s easy enough to reproduce locally: call wbeditentity with a Lexeme ID and a data parameter like {"senses": null} (or {"forms": null}, in which case the error moves to FormListChangeOpDeserializer).