Page MenuHomePhabricator

Diff pages throw an exception when the connection to fed props repo is gone
Closed, ResolvedPublic

Description

This happens in diff visualization when trying to get the label to show in the diff view

image.png (352×715 px, 20 KB)

We should fallback to showing the property ID only

[162c18b9a375a9514954405f] /index.php?title=Item:Q3&diff=61&oldid=60 Wikibase\Repo\FederatedProperties\ApiRequestExecutionException from line 90 of /app/extensions/Wikibase/repo/includes/FederatedProperties/GenericActionApiClient.php:

Backtrace:

#0 /app/extensions/Wikibase/repo/includes/FederatedProperties/ApiEntityLookup.php(65): Wikibase\Repo\FederatedProperties\GenericActionApiClient->get(array)
#1 /app/extensions/Wikibase/repo/includes/FederatedProperties/ApiEntityLookup.php(36): Wikibase\Repo\FederatedProperties\ApiEntityLookup->getEntities(array)
#2 /app/extensions/Wikibase/repo/includes/FederatedProperties/ApiPrefetchingTermLookup.php(90): Wikibase\Repo\FederatedProperties\ApiEntityLookup->fetchEntities(array)
#3 /app/extensions/Wikibase/data-access/src/ByTypeDispatchingPrefetchingTermLookup.php(52): Wikibase\Repo\FederatedProperties\ApiPrefetchingTermLookup->prefetchTerms(array, array, array)
#4 /app/extensions/Wikibase/data-access/src/ByTypeDispatchingPrefetchingTermLookup.php(52): Wikibase\DataAccess\ByTypeDispatchingPrefetchingTermLookup->prefetchTerms(array, array, array)
#5 /app/extensions/Wikibase/data-access/src/ByTypeDispatchingPrefetchingTermLookup.php(88): Wikibase\DataAccess\ByTypeDispatchingPrefetchingTermLookup->prefetchTerms(array, array, array)
#6 /app/extensions/Wikibase/lib/includes/Store/EntityTermLookupBase.php(41): Wikibase\DataAccess\ByTypeDispatchingPrefetchingTermLookup->getTermsOfType(Wikibase\DataModel\Entity\PropertyId, string, array)
#7 /app/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php(51): Wikibase\Lib\Store\EntityTermLookupBase->getLabels(Wikibase\DataModel\Entity\PropertyId, array)
#8 /app/vendor/wikibase/data-model-services/src/EntityId/EntityIdLabelFormatter.php(53): Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup->getLabel(Wikibase\DataModel\Entity\PropertyId)
#9 /app/extensions/Wikibase/lib/includes/Formatters/LabelsProviderEntityIdHtmlLinkFormatter.php(82): Wikibase\DataModel\Services\EntityId\EntityIdLabelFormatter->lookupEntityLabel(Wikibase\DataModel\Entity\PropertyId)
#10 /app/extensions/Wikibase/lib/includes/Formatters/DispatchingEntityIdHtmlLinkFormatter.php(48): Wikibase\Lib\Formatters\LabelsProviderEntityIdHtmlLinkFormatter->formatEntityId(Wikibase\DataModel\Entity\PropertyId)
#11 /app/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php(106): Wikibase\Lib\Formatters\DispatchingEntityIdHtmlLinkFormatter->formatEntityId(Wikibase\DataModel\Entity\PropertyId)
#12 /app/extensions/Wikibase/repo/includes/Diff/DifferencesSnakVisualizer.php(122): Wikibase\Repo\Diff\DifferencesSnakVisualizer->formatPropertyId(Wikibase\DataModel\Entity\PropertyId)
#13 /app/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php(150): Wikibase\Repo\Diff\DifferencesSnakVisualizer->getPropertyHeader(Wikibase\DataModel\Snak\PropertyValueSnak)
#14 /app/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php(70): Wikibase\Repo\Diff\ClaimDifferenceVisualizer->visualizeMainSnakChange(string, Diff\DiffOp\DiffOpChange, Wikibase\DataModel\Snak\PropertyValueSnak, Wikibase\DataModel\Snak\PropertyValueSnak)
#15 /app/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php(118): Wikibase\Repo\Diff\ClaimDifferenceVisualizer->visualizeClaimChange(Wikibase\Repo\Diff\ClaimDifference, Wikibase\DataModel\Statement\Statement, array)
#16 /app/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php(154): Wikibase\Repo\Diff\ClaimDifferenceVisualizer->visualizeNewClaim(Wikibase\DataModel\Statement\Statement)
#17 /app/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php(109): Wikibase\Repo\Diff\BasicEntityDiffVisualizer->getClaimDiffHtml(Diff\DiffOp\DiffOpAdd)
#18 /app/extensions/Wikibase/repo/includes/Diff/BasicEntityDiffVisualizer.php(76): Wikibase\Repo\Diff\BasicEntityDiffVisualizer->visualizeEntityDiff(Wikibase\DataModel\Services\Diff\ItemDiff)
#19 /app/extensions/Wikibase/repo/includes/Diff/ItemDiffVisualizer.php(78): Wikibase\Repo\Diff\BasicEntityDiffVisualizer->visualizeEntityContentDiff(Wikibase\Repo\Content\EntityContentDiff)
#20 /app/extensions/Wikibase/repo/includes/Diff/DispatchingEntityDiffVisualizer.php(33): Wikibase\Repo\Diff\ItemDiffVisualizer->visualizeEntityContentDiff(Wikibase\Repo\Content\EntityContentDiff)
#21 /app/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php(147): Wikibase\Repo\Diff\DispatchingEntityDiffVisualizer->visualizeEntityContentDiff(Wikibase\Repo\Content\EntityContentDiff)
#22 /app/includes/diff/DifferenceEngineSlotDiffRenderer.php(54): Wikibase\Repo\Diff\EntityContentDiffView->generateContentDiffBody(Wikibase\Repo\Content\ItemContent, Wikibase\Repo\Content\ItemContent)
#23 /app/includes/diff/DifferenceEngine.php(1245): DifferenceEngineSlotDiffRenderer->getDiff(Wikibase\Repo\Content\ItemContent, Wikibase\Repo\Content\ItemContent)
#24 /app/includes/diff/DifferenceEngine.php(1150): DifferenceEngine->getDiffBody()
#25 /app/includes/diff/DifferenceEngine.php(1112): DifferenceEngine->getDiff(string, string, string)
#26 /app/includes/diff/DifferenceEngine.php(876): DifferenceEngine->showDiff(string, string, string)
#27 /app/includes/page/Article.php(976): DifferenceEngine->showDiffPage(boolean)
#28 /app/includes/page/Article.php(657): Article->showDiffPage()
#29 /app/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php(79): Article->view()
#30 /app/extensions/Wikibase/repo/includes/Actions/ViewEntityAction.php(54): Wikibase\Repo\Actions\ViewEntityAction->showEntityPage()
#31 /app/includes/MediaWiki.php(527): Wikibase\Repo\Actions\ViewEntityAction->show()
#32 /app/includes/MediaWiki.php(313): MediaWiki->performAction(Article, Title)
#33 /app/includes/MediaWiki.php(940): MediaWiki->performRequest()
#34 /app/includes/MediaWiki.php(543): MediaWiki->main()
#35 /app/index.php(53): MediaWiki->run()
#36 /app/index.php(46): wfIndexMain()
#37 {main}

Event Timeline

@Addshore To keep consistent with behavior on other pages (e.g. item page), I'd prefer the fallback to property ID only over allowing the page to fail.

Change 620069 had a related patch set uploaded (by Addshore; owner: Addshore):
[mediawiki/extensions/Wikibase@master] FP: Show diff pages even when FP has connection issues

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

Change 620355 had a related patch set uploaded (by Tobias Andersson; owner: Tobias Andersson):
[mediawiki/extensions/WikibaseQualityConstraints@master] SpecialConstraintReport: Use factory interface instead of implementation

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

Change 620069 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] FP: Show diff pages even when FP has connection issues

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

Change 620355 merged by jenkins-bot:
[mediawiki/extensions/WikibaseQualityConstraints@master] SpecialConstraintReport: Use factory interface instead of implementation

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

Change 693655 had a related patch set uploaded (by Paladox; author: Tobias Andersson):

[mediawiki/extensions/WikibaseQualityConstraints@REL1_35] SpecialConstraintReport: Use factory interface instead of implementation

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

Change 693655 merged by jenkins-bot:

[mediawiki/extensions/WikibaseQualityConstraints@REL1_35] SpecialConstraintReport: Use factory interface instead of implementation

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