Page MenuHomePhabricator

Implement DispatchingEntityInfoBuilder for bulk queries across multiple repos.
Closed, ResolvedPublic

Description

EntityInfoBuilder provides an interface for collecting information about multiple entities in bulk. SqlEntityInfoBuilder does so using database queries.

This functionality is used primarily to fetch the labels of all referenced entities that are to be shown on an Item page. If these entities are defined on different repositories, the EntityInfoBuilder needs to be able to collect and combine information from all of them - that is, we need a DispatchingEntityInfoBuilder that delegates to a set of "actual" EntityInfoBuilder instances. Code that currently constructs or requires an SqlEntityInfoBuilder should in the future construct or require a DispatchingEntityInfoBuilder.

To achieve this, SqlEntityInfoBuilderFactory needs to be wrapped in a DispatchingEntityInfoBuilderFactory, or become generic, relying on callback for performing the actual implementation. The code that constructs the DispatchingEntityInfoBuilderFactory needs access to information defiend in the foreignRepos client setting, probably best in the form of a RepoDefinitions object, similar to EntityTypeDefinitions and DataTypeDefinitions.

Details

Related Gerrit Patches:
mediawiki/extensions/Wikibase : masterProvide EntityInfoBuilderFactory in EntityDataRetrievalServiceFactory
mediawiki/extensions/Wikibase : masterIntroduce DispatchingEntityInfoBuilderFactory
mediawiki/extensions/Wikibase : masterIntroduce DispatchingEntityInfoBuilder
mediawiki/extensions/Wikibase : masterMake SqlEntityInfoBuilder repository-aware

Related Objects

StatusAssignedTask
Declineddchen
OpenNone
OpenNone
DuplicateNone
OpenNone
ResolvedAbit
DuplicateNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
StalledNone
ResolvedLydia_Pintscher
ResolvedLydia_Pintscher
ResolvedLydia_Pintscher
ResolvedWMDE-leszek
ResolvedWMDE-leszek
ResolvedWMDE-leszek
ResolvedWMDE-leszek

Event Timeline

daniel created this task.Feb 6 2017, 5:55 PM
daniel moved this task from Inbox to Push on the User-Daniel board.Feb 6 2017, 6:18 PM
WMDE-leszek moved this task from Proposed to Doing on the Wikidata-Former-Sprint-Board board.
WMDE-leszek moved this task from incoming to in progress on the Wikidata board.

Change 337270 had a related patch set uploaded (by WMDE-leszek):
Introduce DispatchingEntityInfoBuilder

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

Change 337271 had a related patch set uploaded (by WMDE-leszek):
Introduce DispatchingEntityInfoBuilderFactory

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

Change 337272 had a related patch set uploaded (by WMDE-leszek):
Provide EntityInfoBuilderFactory in EntityDataRetrievalServiceFactory

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

Change 337269 had a related patch set uploaded (by WMDE-leszek):
Make SqlEntityInfoBuilder repository-aware

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

Change 337269 merged by jenkins-bot:
[mediawiki/extensions/Wikibase] Make SqlEntityInfoBuilder repository-aware

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

Change 337270 merged by jenkins-bot:
[mediawiki/extensions/Wikibase] Introduce DispatchingEntityInfoBuilder

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

Change 337271 merged by jenkins-bot:
[mediawiki/extensions/Wikibase] Introduce DispatchingEntityInfoBuilderFactory

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

Change 337272 merged by jenkins-bot:
[mediawiki/extensions/Wikibase] Provide EntityInfoBuilderFactory in EntityDataRetrievalServiceFactory

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

WMDE-leszek closed this task as Resolved.Mar 8 2017, 4:21 PM
WMDE-leszek moved this task from Review to Done on the Wikidata-Former-Sprint-Board board.