Last modified: 2014-11-03 14:30:42 UTC
mw1196 wikidatawiki: [26dffaf0] /w/api.php Exception from line 429 of /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/HashArray.php: Can only add Wikibase\DataModel\Snak\Snak implementing objects to Wikibase\DataModel\Snak\SnakList. #0 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/HashArray.php(393): Wikibase\DataModel\HashArray->setElement('P143', Array) #1 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/HashArray.php(81): Wikibase\DataModel\HashArray->offsetSet('P143', Array) #2 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/Reference.php(67): Wikibase\DataModel\HashArray->__construct(Array) #3 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(187): Wikibase\DataModel\Reference->getHash() #4 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(151): Wikibase\ClaimHtmlGenerator->getHtmlForReference(Object(Wikibase\DataModel\Reference), Array) #5 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(98): Wikibase\ClaimHtmlGenerator->getHtmlForReferences(Object(Wikibase\DataModel\ReferenceList), Array) #6 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/View/ClaimsView.php(206): Wikibase\ClaimHtmlGenerator->getHtmlForClaim(Object(Wikibase\DataModel\Statement\Statement), Array, '<span class="wb...') #7 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/View/ClaimsView.php(87): Wikibase\Repo\View\ClaimsView->getHtmlForClaimGroup(Array, Array) #8 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ItemView.php(34): Wikibase\Repo\View\ClaimsView->getHtml(Array, 'wikibase-statem...') #9 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityView.php(115): Wikibase\ItemView->getInnerHtml(Object(Wikibase\EntityRevision), true) #10 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php(142): Wikibase\EntityView->getHtml(Object(Wikibase\EntityRevision), true) #11 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php(90): Wikibase\EntityParserOutputGenerator->addHtmlToParserOutput(Object(ParserOutput), Object(Wikibase\EntityRevision), true) #12 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(264): Wikibase\EntityParserOutputGenerator->getParserOutput(Object(Wikibase\EntityRevision), true, true) #13 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(210): Wikibase\EntityContent->getParserOutputFromEntityView(Object(Title), NULL, Object(ParserOptions), true) #14 /srv/mediawiki/php-1.25wmf1/includes/page/WikiPage.php(2145): Wikibase\EntityContent->getParserOutput(Object(Title), NULL, Object(ParserOptions)) #15 /srv/mediawiki/php-1.25wmf1/extensions/TemplateData/TemplateData.hooks.php(71): WikiPage->prepareContentForEdit(Object(Wikibase\ItemContent), NULL, Object(User), 'application/jso...') #16 [internal function]: TemplateDataHooks::onPageContentSave(Object(WikiPage), Object(User), Object(Wikibase\ItemContent), '/* wbsetclaim-c...', 0, NULL, NULL, 66, Object(Status)) #20 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(247): WikiPage->doEditContent(Object(Wikibase\ItemContent), '/* wbsetclaim-c...', 66, 160850544, Object(User)) #21 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(148): Wikibase\Repo\Store\WikiPageEntityStore->saveEntityContent(Object(Wikibase\ItemContent), '/* wbsetclaim-c...', Object(User), 66, 160850544) #22 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EditEntity.php(720): Wikibase\Repo\Store\WikiPageEntityStore->saveEntity(Object(Wikibase\DataModel\Entity\Item), '/* wbsetclaim-c...', Object(User), 66, 160850544) #23 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ApiWikibase.php(446): Wikibase\EditEntity->attemptSave('/* wbsetclaim-c...', 2, '1614f8f17bc608f...') #24 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ModifyClaim.php(68): Wikibase\Api\ApiWikibase->attemptSaveEntity(Object(Wikibase\DataModel\Entity\Item), Object(Wikibase\Summary), 2) #25 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/SetClaim.php(82): Wikibase\Api\ModifyClaim->saveChanges(Object(Wikibase\DataModel\Entity\Item), Object(Wikibase\Summary)) #26 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(932): Wikibase\Api\SetClaim->execute()
2014-10-01 09:15:28 mw1122 wikidatawiki: [846d5661] /w/api.php Exception from line 145 of /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/lib/includes/store/EntityContentDataCodec.php: SnaksSerializer can only serialize Snaks objects #0 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityHandler.php(356): Wikibase\Lib\Store\EntityContentDataCodec->encodeEntity(Object(Wikibase\DataModel\Entity\Item), 'application/jso...') #1 /srv/mediawiki/php-1.25wmf1/includes/content/AbstractContent.php(151): Wikibase\Repo\Content\EntityHandler->serializeContent(Object(Wikibase\ItemContent), 'application/jso...') #2 /srv/mediawiki/php-1.25wmf1/includes/page/WikiPage.php(2154): AbstractContent->serialize('application/jso...') #3 /srv/mediawiki/php-1.25wmf1/extensions/TemplateData/TemplateData.hooks.php(71): WikiPage->prepareContentForEdit(Object(Wikibase\ItemContent), NULL, Object(User), 'application/jso...') #4 [internal function]: TemplateDataHooks::onPageContentSave(Object(WikiPage), Object(User), Object(Wikibase\ItemContent), '/* wbsetclaim-c...', 0, NULL, NULL, 66, Object(Status)) #5 /srv/mediawiki/php-1.25wmf1/includes/Hooks.php(206): call_user_func_array('TemplateDataHoo...', Array) #6 /srv/mediawiki/php-1.25wmf1/includes/GlobalFunctions.php(3991): Hooks::run('PageContentSave', Array, NULL) #7 /srv/mediawiki/php-1.25wmf1/includes/page/WikiPage.php(1780): wfRunHooks('PageContentSave', Array) #8 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(247): WikiPage->doEditContent(Object(Wikibase\ItemContent), '/* wbsetclaim-c...', 66, 161007033, Object(User)) #9 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(148): Wikibase\Repo\Store\WikiPageEntityStore->saveEntityContent(Object(Wikibase\ItemContent), '/* wbsetclaim-c...', Object(User), 66, 161007033) #10 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EditEntity.php(720): Wikibase\Repo\Store\WikiPageEntityStore->saveEntity(Object(Wikibase\DataModel\Entity\Item), '/* wbsetclaim-c...', Object(User), 66, 161007033) #11 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ApiWikibase.php(446): Wikibase\EditEntity->attemptSave('/* wbsetclaim-c...', 2, '38e998a64050597...') #12 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ModifyClaim.php(68): Wikibase\Api\ApiWikibase->attemptSaveEntity(Object(Wikibase\DataModel\Entity\Item), Object(Wikibase\Summary), 2) #13 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/SetClaim.php(82): Wikibase\Api\ModifyClaim->saveChanges(Object(Wikibase\DataModel\Entity\Item), Object(Wikibase\Summary)) #14 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(932): Wikibase\Api\SetClaim->execute() #15 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(364): ApiMain->executeAction() #16 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(335): ApiMain->executeActionWithErrorHandling() #17 /srv/mediawiki/php-1.25wmf1/api.php(85): ApiMain->execute() #18 /srv/mediawiki/w/api.php(3): require('/srv/mediawiki/...') #19 {main}
same as above.... this is the reason for the error on https://www.wikidata.org/wiki/Q72 the error is not appearing in the logs but was able to produce it with Article::view() Caught exception InvalidArgumentException: Can only add Wikibase\DataModel\Snak\Snak implementing objects to Wikibase\DataModel\Snak\SnakList, but found a array instead #0 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/HashArray.php(393): Wikibase\DataModel\HashArray->setElement('P143', Array) #1 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/HashArray.php(81): Wikibase\DataModel\HashArray->offsetSet('P143', Array) #2 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model/src/Reference.php(67): Wikibase\DataModel\HashArray->__construct(Array) #3 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(187): Wikibase\DataModel\Reference->getHash() #4 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(151): Wikibase\ClaimHtmlGenerator->getHtmlForReference(Object(Wikibase\DataModel\Reference), Array) #5 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php(98): Wikibase\ClaimHtmlGenerator->getHtmlForReferences(Object(Wikibase\DataModel\ReferenceList), Array) #6 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/View/ClaimsView.php(206): Wikibase\ClaimHtmlGenerator->getHtmlForClaim(Object(Wikibase\DataModel\Statement\Statement), Array, '<span class="wb...') #7 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/View/ClaimsView.php(87): Wikibase\Repo\View\ClaimsView->getHtmlForClaimGroup(Array, Array) #8 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/ItemView.php(34): Wikibase\Repo\View\ClaimsView->getHtml(Array, 'wikibase-statem...') #9 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityView.php(115): Wikibase\ItemView->getInnerHtml(Object(Wikibase\EntityRevision), true) #10 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php(142): Wikibase\EntityView->getHtml(Object(Wikibase\EntityRevision), true) #11 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php(90): Wikibase\EntityParserOutputGenerator->addHtmlToParserOutput(Object(ParserOutput), Object(Wikibase\EntityRevision), true) #12 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(264): Wikibase\EntityParserOutputGenerator->getParserOutput(Object(Wikibase\EntityRevision), true, true) #13 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(210): Wikibase\EntityContent->getParserOutputFromEntityView(Object(Title), 160513146, Object(ParserOptions), true) #14 /srv/mediawiki/php-1.25wmf1/includes/poolcounter/PoolWorkArticleView.php(139): Wikibase\EntityContent->getParserOutput(Object(Title), 160513146, Object(ParserOptions)) #15 /srv/mediawiki/php-1.25wmf1/includes/poolcounter/PoolCounterWork.php(123): PoolWorkArticleView->doWork() #16 /srv/mediawiki/php-1.25wmf1/includes/page/Article.php(688): PoolCounterWork->execute() #17 /srv/mediawiki/php-1.25wmf1/maintenance/eval.php(81) : eval()'d code(1): Article->view() #18 /srv/mediawiki/php-1.25wmf1/maintenance/eval.php(81): eval() #19 /srv/mediawiki/multiversion/MWScript.php(97): require_once('/srv/mediawiki/...')
doing the following produced the error: $title = Title::newFromText( 'Q72' ); $page = WikiPage::factory( $title ); $content = $page->getContent(); $pout = $content->getParserOutput( $title );
Change 164621 had a related patch set uploaded by Aude: Pass string to wfTemplate in FingerprintView instead of Message https://gerrit.wikimedia.org/r/164621
it seems to make a difference if FingerprintView::getHtmlForLabel is called (via EntityView::getHtmlForFingerprint) before ClaimsView::getHtml. If FingerprintView::getHtmlForLabel called, then we get the exception on Q72. if calling ClaimsView::getHtml (on Q72) with $entityRevision->getEntity()->getClaims() directly, then no exception, no problem. with more debugging, it seems the problem is: $idInParentheses = wfMessage( 'parentheses', $id ) in FingerprintView::getHtmlForLabel and then it is passed to wfTemplate as a Message. Looking at the code, it might work via magic in the Template class (which itself extends Message) and suppose it does work on other items! but not on Q72. if we convert this to a string before passing to the template, then the exception does not occur. it still seems like something else weird is going on and think we should further investigate.
note that "$idInParentheses = wfMessage( 'parentheses', $id )" is something new in the branch we deployed this week. definitely could be the issue although I find it odd how it affects references / SnakList. (instead getting an array of snaks in some cases)
Change 164621 merged by jenkins-bot: Pass string to wfTemplate in FingerprintView instead of Message https://gerrit.wikimedia.org/r/164621
Change 164767 had a related patch set uploaded by Aude: Fix reference snaks handling in ClaimHtmlGenerator https://gerrit.wikimedia.org/r/164767
When I fixed https://gerrit.wikimedia.org/r/#/c/164767/ but not apply https://gerrit.wikimedia.org/r/164621, then with Q72 I got: Catchable fatal error: Object of class Wikibase\DataModel\Snak\PropertyValueSnak could not be converted to string in /srv/mediawiki/php-1.25wmf1/includes/cache/MessageCache.php on line 787 I think both fixes are required for fixing the issues with Q72. I think there still is some other related issue(s) maybe in the serialization code for what is reported in comment #1 above. some places where the issue has happened: https://www.wikidata.org/wiki/Q1411015 - cannot add official website, http://www.rociomarquez.com/ wbsetclaim with: 'claim' => '{"type":"statement","mainsnak":{"snaktype":"value","property":"P856","datavalue":{"type":"string","value":"http://www.rociomarquez.com"}},"id":"Q1411015$839cad71-48e8-8a99-bbf9-bd7a94f907f0","qualifiers":{},"qualifiers-order":[],"rank":"normal"} 'index' => 0, 'baserevid' => 145736429, https://www.wikidata.org/wiki/Q34 wbsetclaim with: 'claim' => '{"type":"statement","mainsnak":{"snaktype":"value","property":"P94","datavalue":{"type":"string","value":"Stora riksvapnet - Riksarkivet Sverige.png"}},"id":"q34$AE9AC7BC-8FE9-4A75-9D9F-3D49A5AE0D49","qualifiers":{},"qualifiers-order":[],"rank":"normal"}', 'index' => 55, 'baserevid' => 161367677, https://www.wikidata.org/w/api.php?action=query&prop=revisions&revids=161954647&rvprop=content&rvparse=1&format=xml does not work also: https://www.wikidata.org/w/index.php?title=Q9358&action=edit&undoafter=156222333&undo=156222390 https://www.wikidata.org/w/index.php?title=Q1048&action=edit&undoafter=152185825&undo=152188325
Change 164767 merged by Jeroen De Dauw: Fix reference snaks handling in ClaimHtmlGenerator https://gerrit.wikimedia.org/r/164767
Change 164910 had a related patch set uploaded by Aude: Fix reference snaks handling in ClaimHtmlGenerator https://gerrit.wikimedia.org/r/164910
Change 164913 had a related patch set uploaded by Aude: Pass string to wfTemplate in FingerprintView instead of Message https://gerrit.wikimedia.org/r/164913
Change 164910 merged by jenkins-bot: Fix reference snaks handling in ClaimHtmlGenerator https://gerrit.wikimedia.org/r/164910
Change 164913 merged by jenkins-bot: Pass string to wfTemplate in FingerprintView instead of Message https://gerrit.wikimedia.org/r/164913
Change 164925 had a related patch set uploaded by Aude: New deployment build, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164925
Change 164925 merged by jenkins-bot: New deployment build, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164925
Change 164950 had a related patch set uploaded by Aude: Update Wikidata, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164950
Change 164952 had a related patch set uploaded by Aude: Update Wikidata, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164952
Change 164952 merged by jenkins-bot: Update Wikidata, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164952
Change 164950 merged by jenkins-bot: Update Wikidata, partial fix for bug 71479 and editing properties https://gerrit.wikimedia.org/r/164950
the stacktrace in comment 1 is result of rethrowing the exception, so we don't have complete log. we added in logging of the original exception and now have this: 2014-10-07 14:08:40 mw1143 wikidatawiki:/w/api.php Exception from line 53 of /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/SnaksSerializer.php: SnaksSerializer can only serialize Snaks objects #0 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(66): Wikibase\DataModel\Serializers\SnaksSerializer->serialize(NULL) #1 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(60): Wikibase\DataModel\Serializers\ReferenceSerializer->getSerialized(Object(Wikibase\DataModel\Reference)) #2 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(65): Wikibase\DataModel\Serializers\ReferenceSerializer->serialize(Object(Wikibase\DataModel\Reference)) #3 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(58): Wikibase\DataModel\Serializers\ReferencesSerializer->getSerialized(Object(Wikibase\DataModel\ReferenceList)) #4 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(115): Wikibase\DataModel\Serializers\ReferencesSerializer->serialize(Object(Wikibase\DataModel\ReferenceList)) #5 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(94): Wikibase\DataModel\Serializers\ClaimSerializer->addReferencesToSerialization(Object(Wikibase\DataModel\Statement\Statement), Array) #6 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(81): Wikibase\DataModel\Serializers\ClaimSerializer->getSerialized(Object(Wikibase\DataModel\Statement\Statement)) #7 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(69): Wikibase\DataModel\Serializers\ClaimSerializer->serialize(Object(Wikibase\DataModel\Statement\Statement)) #8 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(59): Wikibase\DataModel\Serializers\ClaimsSerializer->getSerialized(Object(Wikibase\DataModel\Claim\Claims)) #9 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(145): Wikibase\DataModel\Serializers\ClaimsSerializer->serialize(Object(Wikibase\DataModel\Claim\Claims)) #10 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(81): Wikibase\DataModel\Serializers\EntitySerializer->addClaimsToSerialization(Object(Wikibase\DataModel\Entity\Item), Array) #11 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(60): Wikibase\DataModel\Serializers\EntitySerializer->getSerialized(Object(Wikibase\DataModel\Entity\Item)) #12 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/vendor/serialization/serialization/src/Serializers/DispatchingSerializer.php(42): Wikibase\DataModel\Serializers\EntitySerializer->serialize(Object(Wikibase\DataModel\Entity\Item)) #13 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/lib/includes/store/EntityContentDataCodec.php(141): Serializers\DispatchingSerializer->serialize(Object(Wikibas\DataModel\Entity\Item)) #14 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityHandler.php(356): Wikibase\Lib\Store\EntityContentDataCodec->encodeEntity(Object(Wikibase\DataModel\Entity\Item), 'application/jso...') #15 /srv/mediawiki/php-1.25wmf1/includes/content/AbstractContent.php(151): Wikibase\Repo\Content\EntityHandler->serializeContent(Object(Wikibase\ItemContent), 'application/jso...') #16 /srv/mediawiki/php-1.25wmf1/includes/page/WikiPage.php(2154): AbstractContent->serialize('application/jso...') #17 /srv/mediawiki/php-1.25wmf1/extensions/TemplateData/TemplateData.hooks.php(71): WikiPage->prepareContentForEdit(Object(Wikibase\ItemContent), NULL, Object(User), 'application/jso...') #18 [internal function]: TemplateDataHooks::onPageContentSave(Object(WikiPage), Object(User), Object(Wikibase\ItemContent), '/* wbsetdescrip...', 0, NULL, NULL, 66, Object(Status)) #19 /srv/mediawiki/php-1.25wmf1/includes/Hooks.php(206): call_user_func_array('TemplateDataHoo...', Array) #20 /srv/mediawiki/php-1.25wmf1/includes/GlobalFunctions.php(3991): Hooks::run('PageContentSave', Array, NULL) #21 /srv/mediawiki/php-1.25wmf1/includes/page/WikiPage.php(1780): wfRunHooks('PageContentSave', Array) #22 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(247): WikiPage->doEditContent(Object(Wikibase\ItemContent), '/* wbsetdescrip...', 66, 162507752, Object(User)) #23 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/store/sql/WikiPageEntityStore.php(148): Wikibase\Repo\Store\WikiPageEntityStore->saveEntityContent(Object(Wikibase\ItemContent), '/* wbsetdescrip...', Object(User), 66, 162507752) #24 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/EditEntity.php(720): Wikibase\Repo\Store\WikiPageEntityStore->saveEntity(Object(Wikibase\DataModel\Entity\Item), '/* wbsetdescrip...', Object(User), 66, 162507752) #25 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ApiWikibase.php(446): Wikibase\EditEntity->attemptSave('/* wbsetdescrip...', 2, 'b0e12dae4847462...') #26 /srv/mediawiki/php-1.25wmf1/extensions/Wikidata/extensions/Wikibase/repo/includes/api/ModifyEntity.php(371): Wikibase\Api\ApiWikibase->attemptSaveEntity(Object(Wikibase\DataModel\Entity\Item), Object(Wikibase\Summary), 2) #27 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(932): Wikibase\Api\ModifyEntity->execute() #28 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(364): ApiMain->executeAction() #29 /srv/mediawiki/php-1.25wmf1/includes/api/ApiMain.php(335): ApiMain->executeActionWithErrorHandling() #30 /srv/mediawiki/php-1.25wmf1/api.php(85): ApiMain->execute() #31 /srv/mediawiki/w/api.php(3): require('/srv/mediawiki/...')
Probably the same problem, but different backtrace: 2014-10-09 22:51:43 mw1083 wikidatawiki: [29528d84] /w/index.php?title=Q159&action=submit&undo=162845169&undoafter=161366786 Exception from line 146 of /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/lib/includes/store/EntityContentDataCodec.php: SnaksSerializer can only serialize Snaks objects #0 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityHandler.php(356): Wikibase\Lib\Store\EntityContentDataCodec->encodeEntity(Object(Wikibase\DataModel\Entity\Item), 'application/jso...') #1 /srv/mediawiki/php-1.25wmf2/includes/content/AbstractContent.php(151): Wikibase\Repo\Content\EntityHandler->serializeContent(Object(Wikibase\ItemContent), 'application/jso...') #2 /srv/mediawiki/php-1.25wmf2/includes/page/WikiPage.php(2154): AbstractContent->serialize('application/jso...') #3 /srv/mediawiki/php-1.25wmf2/extensions/TemplateData/TemplateData.hooks.php(71): WikiPage->prepareContentForEdit(Object(Wikibase\ItemContent), NULL, Object(User), 'application/jso...') #4 [internal function]: TemplateDataHooks::onPageContentSave(Object(WikiPage), Object(User), Object(Wikibase\ItemContent), 'Undid revision ...', 0, NULL, NULL, 2, Object(Status)) #5 /srv/mediawiki/php-1.25wmf2/includes/Hooks.php(206): call_user_func_array('TemplateDataHoo...', Array) #6 /srv/mediawiki/php-1.25wmf2/includes/GlobalFunctions.php(3991): Hooks::run('PageContentSave', Array, NULL) #7 /srv/mediawiki/php-1.25wmf2/includes/page/WikiPage.php(1780): wfRunHooks('PageContentSave', Array) #8 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(168): WikiPage->doEditContent(Object(Wikibase\ItemContent), 'Undid revision ...') #9 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(112): Wikibase\SubmitEntityAction->attemptSave(Object(Title), Object(Wikibase\ItemContent), 'Undid revision ...', '410a4cf2dc397bc...') #10 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(42): Wikibase\SubmitEntityAction->undo() #11 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(414): Wikibase\SubmitEntityAction->show() #12 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(282): MediaWiki->performAction(Object(Article), Object(Title)) #13 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(584): MediaWiki->performRequest() #14 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(435): MediaWiki->main() #15 /srv/mediawiki/php-1.25wmf2/index.php(46): MediaWiki->run() #16 /srv/mediawiki/w/index.php(3): require('/srv/mediawiki/...') #17 {main}
Other exception for the same(?) request: 2014-10-09 22:51:43 mw1083 wikidatawiki: [958baa81] /w/index.php?title=Q159&action=submit&undo=162845169&undoafter=161366786 Exception from line 53 of /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/SnaksSerializer.php: SnaksSerializer can only serialize Snaks objects #0 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(66): Wikibase\DataModel\Serializers\SnaksSerializer->serialize(NULL) #1 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(60): Wikibase\DataModel\Serializers\ReferenceSerializer->getSerialized(Object(Wikibase\DataModel\Reference)) #2 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(65): Wikibase\DataModel\Serializers\ReferenceSerializer->serialize(Object(Wikibase\DataModel\Reference)) #3 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(58): Wikibase\DataModel\Serializers\ReferencesSerializer->getSerialized(Object(Wikibase\DataModel\ReferenceList)) #4 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(115): Wikibase\DataModel\Serializers\ReferencesSerializer->serialize(Object(Wikibase\DataModel\ReferenceList)) #5 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(94): Wikibase\DataModel\Serializers\ClaimSerializer->addReferencesToSerialization(Object(Wikibase\DataModel\Statement\Statement), Array) #6 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(81): Wikibase\DataModel\Serializers\ClaimSerializer->getSerialized(Object(Wikibase\DataModel\Statement\Statement)) #7 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(69): Wikibase\DataModel\Serializers\ClaimSerializer->serialize(Object(Wikibase\DataModel\Statement\Statement)) #8 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(59): Wikibase\DataModel\Serializers\ClaimsSerializer->getSerialized(Object(Wikibase\DataModel\Claim\Claims)) #9 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(145): Wikibase\DataModel\Serializers\ClaimsSerializer->serialize(Object(Wikibase\DataModel\Claim\Claims)) #10 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(81): Wikibase\DataModel\Serializers\EntitySerializer->addClaimsToSerialization(Object(Wikibase\DataModel\Entity\Item), Array) #11 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(60): Wikibase\DataModel\Serializers\EntitySerializer->getSerialized(Object(Wikibase\DataModel\Entity\Item)) #12 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/vendor/serialization/serialization/src/Serializers/DispatchingSerializer.php(42): Wikibase\DataModel\Serializers\EntitySerializer->serialize(Object(Wikibase\DataModel\Entity\Item)) #13 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/lib/includes/store/EntityContentDataCodec.php(141): Serializers\DispatchingSerializer->serialize(Object(Wikibase\DataModel\Entity\Item)) #14 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityHandler.php(356): Wikibase\Lib\Store\EntityContentDataCodec->encodeEntity(Object(Wikibase\DataModel\Entity\Item), 'application/jso...') #15 /srv/mediawiki/php-1.25wmf2/includes/content/AbstractContent.php(151): Wikibase\Repo\Content\EntityHandler->serializeContent(Object(Wikibase\ItemContent), 'application/jso...') #16 /srv/mediawiki/php-1.25wmf2/includes/page/WikiPage.php(2154): AbstractContent->serialize('application/jso...') #17 /srv/mediawiki/php-1.25wmf2/extensions/TemplateData/TemplateData.hooks.php(71): WikiPage->prepareContentForEdit(Object(Wikibase\ItemContent), NULL, Object(User), 'application/jso...') #18 [internal function]: TemplateDataHooks::onPageContentSave(Object(WikiPage), Object(User), Object(Wikibase\ItemContent), 'Undid revision ...', 0, NULL, NULL, 2, Object(Status)) #19 /srv/mediawiki/php-1.25wmf2/includes/Hooks.php(206): call_user_func_array('TemplateDataHoo...', Array) #20 /srv/mediawiki/php-1.25wmf2/includes/GlobalFunctions.php(3991): Hooks::run('PageContentSave', Array, NULL) #21 /srv/mediawiki/php-1.25wmf2/includes/page/WikiPage.php(1780): wfRunHooks('PageContentSave', Array) #22 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(168): WikiPage->doEditContent(Object(Wikibase\ItemContent), 'Undid revision ...') #23 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(112): Wikibase\SubmitEntityAction->attemptSave(Object(Title), Object(Wikibase\ItemContent), 'Undid revision ...', '410a4cf2dc397bc...') #24 /srv/mediawiki/php-1.25wmf2/extensions/Wikidata/extensions/Wikibase/repo/includes/actions/SubmitEntityAction.php(42): Wikibase\SubmitEntityAction->undo() #25 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(414): Wikibase\SubmitEntityAction->show() #26 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(282): MediaWiki->performAction(Object(Article), Object(Title)) #27 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(584): MediaWiki->performRequest() #28 /srv/mediawiki/php-1.25wmf2/includes/MediaWiki.php(435): MediaWiki->main() #29 /srv/mediawiki/php-1.25wmf2/index.php(46): MediaWiki->run() #30 /srv/mediawiki/w/index.php(3): require('/srv/mediawiki/...') #31 {main}
*** Bug 71667 has been marked as a duplicate of this bug. ***
cirrus indexing is also having trouble with accessing / deserializing items: 2014-10-15 09:41:20 mw1007 wikidatawiki: [4ef16d09] [no req] Exception from line 53 of /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/SnaksSerializer.php: SnaksSerializer can only serialize Snaks objects #0 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(66): Wikibase\DataModel\Serializers\SnaksSerializer->serialize(NULL) #1 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferenceSerializer.php(60): Wikibase\DataModel\Serializers\ReferenceSerializer->getSerialized(Object(Wikibase\DataModel\Reference)) #2 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(65): Wikibase\DataModel\Serializers\ReferenceSerializer->serialize(Object(Wikibase\DataModel\Reference)) #3 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ReferencesSerializer.php(58): Wikibase\DataModel\Serializers\ReferencesSerializer->getSerialized(Object(Wikibase\DataModel\ReferenceList)) #4 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(115): Wikibase\DataModel\Serializers\ReferencesSerializer->serialize(Object(Wikibase\DataModel\ReferenceList)) #5 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(94): Wikibase\DataModel\Serializers\ClaimSerializer->addReferencesToSerialization(Object(Wikibase\DataModel\Statement\Statement), Array) #6 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimSerializer.php(81): Wikibase\DataModel\Serializers\ClaimSerializer->getSerialized(Object(Wikibase\DataModel\Statement\Statement)) #7 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(69): Wikibase\DataModel\Serializers\ClaimSerializer->serialize(Object(Wikibase\DataModel\Statement\Statement)) #8 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/ClaimsSerializer.php(59): Wikibase\DataModel\Serializers\ClaimsSerializer->getSerialized(Object(Wikibase\DataModel\Claim\Claims)) #9 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(145): Wikibase\DataModel\Serializers\ClaimsSerializer->serialize(Object(Wikibase\DataModel\Claim\Claims)) #10 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(81): Wikibase\DataModel\Serializers\EntitySerializer->addClaimsToSerialization(Object(Wikibase\DataModel\Entity\Item), Array) #11 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/wikibase/data-model-serialization/src/Serializers/EntitySerializer.php(60): Wikibase\DataModel\Serializers\EntitySerializer->getSerialized(Object(Wikibase\DataModel\Entity\Item)) #12 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/vendor/serialization/serialization/src/Serializers/DispatchingSerializer.php(42): Wikibase\DataModel\Serializers\EntitySerializer->serialize(Object(Wikibase\DataModel\Entity\Item)) #13 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(581): Serializers\DispatchingSerializer->serialize(Object(Wikibase\DataModel\Entity\Item)) #14 /srv/mediawiki/php-1.25wmf3/extensions/Wikidata/extensions/Wikibase/repo/includes/content/EntityContent.php(590): Wikibase\EntityContent->getNativeData() #15 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/BuildDocument/PageTextBuilder.php(58): Wikibase\EntityContent->getSize() #16 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/Updater.php(338): CirrusSearch\BuildDocument\PageTextBuilder->build() #17 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/Updater.php(192): CirrusSearch\Updater->buildDocumentsForPages(Array, 0) #18 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/Updater.php(67): CirrusSearch\Updater->updatePages(Array, '1ms', 120, 0) #19 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/Job/LinksUpdate.php(49): CirrusSearch\Updater->updateFromTitle(Object(Title)) #20 /srv/mediawiki/php-1.25wmf3/extensions/CirrusSearch/includes/Job/Job.php(57): CirrusSearch\Job\LinksUpdate->doJob() #21 /srv/mediawiki/php-1.25wmf3/includes/jobqueue/JobRunner.php(136): CirrusSearch\Job\Job->run() #22 /srv/mediawiki/php-1.25wmf3/maintenance/runJobs.php(80): JobRunner->run(Array) #23 /srv/mediawiki/php-1.25wmf3/maintenance/doMaintenance.php(101): RunJobs->execute() #24 /srv/mediawiki/php-1.25wmf3/maintenance/runJobs.php(95): require_once('/srv/mediawiki/...') #25 /srv/mediawiki/multiversion/MWScript.php(97): require_once('/srv/mediawiki/...')
upon further investigation, php bug "SplObjectStorage contains corrupt member variables after garbage collection" sounds suspicious: https://bugs.php.net/bug.php?id=65967 When trying to undo an edit that involved references, on my dev wiki, I am experiencing this issue, as well as Wikibase\Repo\Diff\ClaimDifferenceVisualizer::getSnakListValues() must be an instance of Wikibase\DataModel\Snak\SnakList (the value here tends to be a variety of things, for example: 'snaks' => '1' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '1' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . 'Ë' . "\0" . '' . "\0" . '' . "\0" . 'z' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '', )) or null. ("\0" represents null within private properties)
*** Bug 71536 has been marked as a duplicate of this bug. ***
sometimes the value of 'snaks' passed to ClaimDifferenceVisualizer::getSnakListValues() is a Term! when trying to undo something
Commit pushed to referencelist at https://github.com/wmde/WikibaseDataModel https://github.com/wmde/WikibaseDataModel/commit/05bd532e3ce6f5b9e31259b70acbca27f778e40c Implement serializable in ReferenceList Relying on SplObjectStorage serialization seems to be problematic, especially when used with a large Item. This converts the ReferenceList to a plain array of Reference objects when serializing, which is more reliable. This appears to resolve the problems with ReferenceList objects becoming corrupt. Bug: 71479
change has been deployed and think this is no longer a problem :)