Page MenuHomePhabricator

“MWContentSerializationException: The provided entity serialization is neither legacy nor current” on Beta Commons
Closed, ResolvedPublicBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

What happens?:

MediaWiki internal error.

Original exception: [ZAO9slsEpiJRX5C8o4JRMwAAABI] /wiki/File:ACDC_test_file_1.pdf MWContentSerializationException: The provided entity serialization is neither legacy nor current
Backtrace:
from /srv/mediawiki/php-master/extensions/Wikibase/lib/includes/Store/EntityContentDataCodec.php(255)
#0 /srv/mediawiki/php-master/extensions/Wikibase/repo/includes/Content/DeferredDecodingEntityHolder.php(99): Wikibase\Lib\Store\EntityContentDataCodec->decodeEntity(string, NULL)
#1 /srv/mediawiki/php-master/extensions/Wikibase/repo/includes/Content/DeferredCopyEntityHolder.php(47): Wikibase\Repo\Content\DeferredDecodingEntityHolder->getEntity(string)
#2 /srv/mediawiki/php-master/extensions/WikibaseMediaInfo/src/Content/MediaInfoContent.php(107): Wikibase\Repo\Content\DeferredCopyEntityHolder->getEntity(string)
#3 /srv/mediawiki/php-master/extensions/WikibaseMediaInfo/src/Content/MediaInfoContent.php(116): Wikibase\MediaInfo\Content\MediaInfoContent->getMediaInfo()
#4 /srv/mediawiki/php-master/extensions/Wikibase/repo/includes/Content/EntityHandler.php(888): Wikibase\MediaInfo\Content\MediaInfoContent->getEntity()
#5 /srv/mediawiki/php-master/extensions/Wikibase/repo/includes/Content/EntityHandler.php(857): Wikibase\Repo\Content\EntityHandler->getEntityRevision(Wikibase\MediaInfo\Content\MediaInfoContent, integer)
#6 /srv/mediawiki/php-master/extensions/Wikibase/repo/includes/Content/EntityHandler.php(794): Wikibase\Repo\Content\EntityHandler->getParserOutputFromEntityView(Wikibase\MediaInfo\Content\MediaInfoContent, integer, ParserOptions, boolean)
#7 /srv/mediawiki/php-master/includes/content/ContentHandler.php(1748): Wikibase\Repo\Content\EntityHandler->fillParserOutput(Wikibase\MediaInfo\Content\MediaInfoContent, MediaWiki\Content\Renderer\ContentParseParams, ParserOutput)
#8 /srv/mediawiki/php-master/includes/content/Renderer/ContentRenderer.php(47): ContentHandler->getParserOutput(Wikibase\MediaInfo\Content\MediaInfoContent, MediaWiki\Content\Renderer\ContentParseParams)
#9 /srv/mediawiki/php-master/includes/Revision/RenderedRevision.php(260): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(Wikibase\MediaInfo\Content\MediaInfoContent, MediaWiki\Title\Title, integer, ParserOptions, boolean)
#10 /srv/mediawiki/php-master/includes/Revision/RenderedRevision.php(232): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(Wikibase\MediaInfo\Content\MediaInfoContent, boolean)
#11 /srv/mediawiki/php-master/includes/Revision/RevisionRenderer.php(242): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#12 /srv/mediawiki/php-master/includes/Revision/RevisionRenderer.php(164): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, array)
#13 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#14 /srv/mediawiki/php-master/includes/Revision/RenderedRevision.php(199): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#15 /srv/mediawiki/php-master/includes/poolcounter/PoolWorkArticleView.php(87): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#16 /srv/mediawiki/php-master/includes/poolcounter/PoolWorkArticleView.php(68): PoolWorkArticleView->renderRevision()
#17 /srv/mediawiki/php-master/includes/poolcounter/PoolCounterWork.php(166): PoolWorkArticleView->doWork()
#18 /srv/mediawiki/php-master/includes/page/ParserOutputAccess.php(299): PoolCounterWork->execute()
#19 /srv/mediawiki/php-master/includes/page/Article.php(735): MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiFilePage, ParserOptions, MediaWiki\Revision\RevisionStoreCacheRecord, integer)
#20 /srv/mediawiki/php-master/includes/page/Article.php(545): Article->generateContentOutput(User, ParserOptions, integer, OutputPage, array)
#21 /srv/mediawiki/php-master/includes/page/ImagePage.php(154): Article->view()
#22 /srv/mediawiki/php-master/includes/actions/ViewAction.php(78): ImagePage->view()
#23 /srv/mediawiki/php-master/includes/MediaWiki.php(556): ViewAction->show()
#24 /srv/mediawiki/php-master/includes/MediaWiki.php(333): MediaWiki->performAction(ImagePage, MediaWiki\Title\Title)
#25 /srv/mediawiki/php-master/includes/MediaWiki.php(920): MediaWiki->performRequest()
#26 /srv/mediawiki/php-master/includes/MediaWiki.php(576): MediaWiki->main()
#27 /srv/mediawiki/php-master/index.php(50): MediaWiki->run()
#28 /srv/mediawiki/php-master/index.php(46): wfIndexMain()
#29 /srv/mediawiki/w/index.php(3): require(string)
#30 {main}

Exception caught inside exception handler: [ZAO9slsEpiJRX5C8o4JRMwAAABI] /wiki/File:ACDC_test_file_1.pdf Wikibase\DataModel\Services\Lookup\EntityLookupException: Failed to unserialize the content object.
Backtrace:
from /srv/mediawiki/php-master/extensions/Wikibase/lib/includes/Store/RevisionBasedEntityLookup.php(51)
#0 /srv/mediawiki/php-master/extensions/Wikibase/lib/packages/wikibase/data-model-services/src/Lookup/RedirectResolvingEntityLookup.php(51): Wikibase\Lib\Store\RevisionBasedEntityLookup->getEntity(Wikibase\MediaInfo\DataModel\MediaInfoId)
#1 /srv/mediawiki/php-master/extensions/WikibaseMediaInfo/src/WikibaseMediaInfoHooks.php(245): Wikibase\DataModel\Services\Lookup\RedirectResolvingEntityLookup->getEntity(Wikibase\MediaInfo\DataModel\MediaInfoId)
#2 /srv/mediawiki/php-master/extensions/WikibaseMediaInfo/src/WikibaseMediaInfoHooks.php(210): Wikibase\MediaInfo\WikibaseMediaInfoHooks->doBeforePageDisplay(OutputPage, MediaWiki\Skins\Vector\SkinVector22, boolean, Wikibase\Repo\BabelUserLanguageLookup, Wikibase\Repo\ParserOutput\DispatchingEntityViewFactory, array)
#3 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(338): Wikibase\MediaInfo\WikibaseMediaInfoHooks::onBeforePageDisplay(OutputPage, MediaWiki\Skins\Vector\SkinVector22)
#4 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#5 /srv/mediawiki/php-master/includes/HookContainer/HookRunner.php(935): MediaWiki\HookContainer\HookContainer->run(string, array, array)
#6 /srv/mediawiki/php-master/includes/OutputPage.php(2894): MediaWiki\HookContainer\HookRunner->onBeforePageDisplay(OutputPage, MediaWiki\Skins\Vector\SkinVector22)
#7 /srv/mediawiki/php-master/includes/exception/MWException.php(184): OutputPage->output()
#8 /srv/mediawiki/php-master/includes/exception/MWException.php(218): MWException->reportHTML()
#9 /srv/mediawiki/php-master/includes/exception/MWExceptionHandler.php(130): MWException->report()
#10 /srv/mediawiki/php-master/includes/exception/MWExceptionHandler.php(249): MWExceptionHandler::report(MWContentSerializationException)
#11 /srv/mediawiki/php-master/includes/MediaWiki.php(595): MWExceptionHandler::handleException(MWContentSerializationException, string)
#12 /srv/mediawiki/php-master/index.php(50): MediaWiki->run()
#13 /srv/mediawiki/php-master/index.php(46): wfIndexMain()
#14 /srv/mediawiki/w/index.php(3): require(string)
#15 {main}

What should have happened instead?:
Show the file.

Other information (browser name/version, screenshots, etc.):
This was detected by the AC/DC browser tests, which run daily (though I didn’t immediately look into it); it first happened on 2023-03-02. Possibly related to T331019: Edits not saving on beta cluster (db replication error, corrupted table)?

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Uh, yeah, this sure doesn’t look like MediaInfo content to me.

shell.php (commonswiki)
> sudo MediaWiki\MediaWikiServices::getInstance()->getRevisionLookup()->getRevisionByTitle( Title::newFromText( 'File:ACDC_test_file_1.pdf' ) )->getSlot( 'mediainfo' )->getContent()->mediaInfoHolder->blob
{"license":"CC0-1.0","description":{"en":"map description"},"sources":"Copied from [http://example.com Example Map Source]","zoom":4,"latitude":40,"longitude":-71,"data":{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"coordinates":[[[-80.50002913065897,39.77066240865875],[-75.81328118030031,39.68054634123834],[-74.75876289146996,40.062725630936086],[-74.72947071677997,41.30656629526223],[-75.52035943340289,42.0068867773054],[-79.70914041403609,42.4190954246792],[-80.58790565472836,42.37583175301424],[-80.50002913065897,39.77066240865875]]],"type":"Polygon"}}]}}

It looks like some kind of map, though I can’t find a corresponding page. Something broken in the blob store, perhaps?

File:ACDC test file 2.pdf is also affected. Both files can still be downloaded via Special:FilePath:



Also, the wikitext content (main slot) can be retrieved with a command similar to the above (change the slot, then call getText() on the content; sudo no longer required): P44931 and P44932.

As far as I’m concerned, we can probably work around this problem by deleting the files and then reuploading them. (The entity data content isn’t important, it gets cleared at the beginning of each browser test run.) However, as the files have more than 5000 revisions, I don’t have permission to delete them: a steward would need to do it.

(Also, since I’m now fairly confident this is a Beta-specific problem, it might make sense to the Wikibase(MediaInfo) / SDC tags – I’ll leave that to the people in charge of those tags, though

(Correction: I could delete the 2.pdf file, but I don’t want to do that while 1.pdf is left behind.)

Okay, this worked:

lucaswerkmeister@deployment-mwmaint02:~$ mwscript edit.php commonswiki --remove --slot mediainfo 'File:ACDC test file 1.pdf' --summary '[[phabricator:T331214|T331214]]' --user 'Lucas Werkmeister'
Saving...done
lucaswerkmeister@deployment-mwmaint02:~$ mwscript edit.php commonswiki --remove --slot mediainfo 'File:ACDC test file 2.pdf' --summary '[[phabricator:T331214|T331214]]' --user 'Lucas Werkmeister'
Saving...done

Mentioned in SAL (#wikimedia-releng) [2023-03-05T14:09:26Z] <lucaswerkmeister> manually deleted mediainfo slots of two pages on beta commons (T331214#8666432)

LucasWerkmeister claimed this task.

And now the AC/DC browser tests work again \o/

I think we can close this task; there may be more broken files, but they should probably be dealt with on a case-by-case basis. (I’m happy to repeat the --remove --slot command for anyone else as needed, if other cases are also okay with just dropping the old entity data rather than recovering it.)