Page MenuHomePhabricator

Use PageUpdater to create dummy revisions
Closed, ResolvedPublic

Description

MediaWiki sometimes creates dummy "null" revisions in the page history to mark events that affect the page's state, but not the pages content. Examples include move/rename and page protection changes.

So far, application logic had to "manually" insert a revision and update the page table to achieve this. However, this is seems rather brittle, and leads to inconsistencies wrt what updates are performed when a dummy revision is created.

For this reason, dummy revisions should be created using the new PageUpdater interface, simply by not supplying any new content before saving the update. However, this would usually trigger a "null edit", which re-applies secondary data updates but does not create a new revision. So PageUpdater will need a mode that forces the creation of empty dummy revisions.

Related Objects

StatusSubtypeAssignedTask
OpenBUG REPORTNone
OpenNone
StalledNone
OpenNone
OpenNone
DuplicateNone
OpenFeatureNone
OpenFeatureNone
DuplicateNone
ResolvedNone
ResolvedNone
OpenNone
OpenFeatureNone
OpenNone
ResolvedNone
ResolvedNone
OpenFeatureNone
OpenNone
OpenFeatureNone
StalledNone
OpenNone
OpenNone
Resolveddaniel
OpenNone

Event Timeline

Change 441595 had a related patch set uploaded (by Daniel Kinzler; owner: Daniel Kinzler):
[mediawiki/core@master] MCR Use PageUpdater to create dummy revisions.

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

This should not block the schema migration, but if we are mistaken on this please draw Core Platform's attention to it.

Change #1101086 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] WIP: PageUpdater: make it easy to create dummy revisions

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

Change #1113976 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] WikiPage: Emit PageUpdatedEvent when protection changes

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

Change #1118008 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] Dummy revisions: add tests for event emission

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

Change #1118008 merged by jenkins-bot:

[mediawiki/core@master] Dummy revisions: add tests for event emission

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

Change #1101086 merged by jenkins-bot:

[mediawiki/core@master] PageUpdater: make it easy to create dummy revisions

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

See T387067 for the possible regression regarding null edits not being flagged as minor edits.

See T387067 for the possible regression regarding null edits not being flagged as minor edits.

Looking at the code before my patch, it seems like not all dummy revisions should be minor:

  • move is minor
  • import is minor
  • file upload is non-minor
  • protection is minor

Checking on extensions, there is a similar mix:

  • FileImporter makes a minor revision
  • FlaggedRevs makes a minor revision
  • Translate makes a non-minor dummy revision

I'll check how to best make the distinction with the new code.

Change #1122092 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] PageUpdater: allow dummy revisions to be minor

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

Change #1122093 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/core@master] RevisionStore: deprecate newDummyRevision

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

Change #1122092 merged by jenkins-bot:

[mediawiki/core@master] PageUpdater: allow dummy revisions to be minor

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

Change #1113976 merged by jenkins-bot:

[mediawiki/core@master] WikiPage: Emit PageUpdatedEvent when protection changes

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

Change #441595 abandoned by Daniel Kinzler:

[mediawiki/core@master] MCR Use PageUpdater to create dummy revisions.

Reason:

stale

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

Change #1122093 merged by jenkins-bot:

[mediawiki/core@master] RevisionStore: deprecate newNullRevision

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

Change #1136767 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/extensions/FileImporter@master] Use PageUpdater to create dummy revisions

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

Change #1136769 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/extensions/FlaggedRevs@master] Use PageUpdater to create dummy revisions

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

Change #1137479 had a related patch set uploaded (by Daniel Kinzler; author: Daniel Kinzler):

[mediawiki/extensions/Translate@master] Use PageUpdater to create dummy revisions

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

Change #1137479 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] TranslateEditAddons: Fix handing of dummy revisions

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

Change #1136769 merged by jenkins-bot:

[mediawiki/extensions/FlaggedRevs@master] Use PageUpdater to create dummy revisions

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