Setting the same page property multiple times with conflicting values is inconsistent with an asynchronous/out-of-order parsing model.
Description
Details
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
Change 759740 merged by jenkins-bot:
[mediawiki/extensions/Wikibase@master] Store `noexternallanglinks` in extension data, not page property
@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!