Page MenuHomePhabricator

Ensure Page Properties can always be combined asynchronously/out-of-order
Open, MediumPublic

Description

Setting the same page property multiple times with conflicting values is inconsistent with an asynchronous/out-of-order parsing model.

Related Objects

StatusSubtypeAssignedTask
OpenReleaseNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenFeatureNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenBUG REPORTNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
OpenNone
Resolvedcscott
ResolvedABreault-WMF
Resolvedcscott
Opencscott
Resolvedssastry
ResolvedJgiannelos
OpenJgiannelos
OpenJgiannelos
OpenJgiannelos
OpenJgiannelos
ResolvedJgiannelos

Event Timeline

As part of this work, we should probably also deprecate ParserOutput::unsetPageProperty().
It is hardly used: https://codesearch.wmcloud.org/search/?q=unsetPageProperty&i=nope&files=&excludeFiles=&repos=

Unfortunately the use in Wikibase is a little nontrivial to get rid of. It's being used to clear all 'badge' related page properties before adding the new ones for an item. I strongly suspect that it is almost always doing nothing, because the pre-existing badge properties are either identical to the ones being set, or empty, but I'd need to understand what's going on with badges in wikibase a little better to be able to be confident of this.

Change 757905 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Deprecate ParserOutput::setPageProperty with conflicting values

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

Change 759740 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Store `noexternallanglinks` in extension data, not page property

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

ssastry triaged this task as Medium priority.Jun 14 2022, 10:38 PM
ssastry added a project: Parsoid-Read-Views.

@cscott: Removing task assignee as this open task has been assigned for more than two years - see the email sent to all task assignees on 2024-04-15.
Please assign this task to yourself again if you still realistically [plan to] work on this task - it would be welcome! :)
If this task has been resolved in the meantime, or should not be worked on by anybody ("declined"), please update its task status via "Add Action… 🡒 Change Status".
Also see https://www.mediawiki.org/wiki/Bug_management/Assignee_cleanup for tips how to best manage your individual work in Phabricator. Thanks!