Page MenuHomePhabricator

Remove all references to the rev_text_id and ar_text_id fields
Closed, ResolvedPublic5 Estimated Story Points

Description

Any code that accesses rev_text_id and ar_text_id fields is unable to make use of MCR. In order to enable for MCR support, all references to these fields have to be removed from the code. They should be replaced with RevisionStore::getQueryInfo(), RevisionStore::newRevisionFromRow(), and RevisionRecord::getContent().

As a corollary, all references to text.old_id should be removed as well. If rev_text_id and ar_text_id are no longer there, there is no need to reference text.old_id (except in SqlBlobStore). A search for uses of the _text_id suffix in may be helpful to find code that needs fixing.

DOD: This task should be considered done when any code referencing rev_text_id or ar_text_id has either been removed or is gated on the MCR schema migration stage, in core and all extensions deployed by Wikimedia, as well as extensions bundled with MediaWiki releases. Other extensions and external tools may be left to be updated later.

Extensions to fix:

Related Objects

StatusSubtypeAssignedTask
Declineddchen
OpenNone
OpenNone
DuplicateNone
OpenFeatureNone
OpenBUG REPORTNone
OpenNone
StalledNone
OpenFeatureNone
DuplicateNone
ResolvedNone
OpenNone
OpenNone
OpenFeatureNone
OpenNone
ResolvedNone
ResolvedNone
OpenFeatureNone
OpenNone
OpenFeatureNone
StalledNone
OpenNone
InvalidNone
ResolvedNone
ResolvedZabe
Resolveddaniel
ResolvedCCicalese_WMF
Resolveddaniel
ResolvedNone
ResolvedNone
ResolvedCCicalese_WMF
Resolveddaniel
Resolved Pchelolo
Resolveddaniel
ResolvedBPirkle
Resolved Pchelolo
Resolved Clarakosi
Resolveddaniel
Resolved Pchelolo
Resolved Pchelolo
Resolved Pchelolo
Resolved Pchelolo
Resolved Pchelolo
Resolveddaniel
Resolveddaniel
Resolved holger.knust
Resolved Pchelolo
Resolveddaniel
ResolvedNone

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

For that matter, I should run a query on the Analytics data to see whether we can just remove ApiQueryDeletedrevs entirely yet.

T221869: Remove deprecated ApiQueryDeletedRevs

Possibly still worth removing the ar_text_id uses to close out this task though.

Change 506573 had a related patch set uploaded (by BPirkle; owner: BPirkle):
[mediawiki/extensions/DeletePagesForGood@master] Remove references to db fields rev_text_id and ar_text_id

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

Change 506325 merged by jenkins-bot:
[mediawiki/core@master] Remove references to db field ar_text_id

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

Change 522228 had a related patch set uploaded (by BPirkle; owner: BPirkle):
[mediawiki/extensions/Duplicator@master] Only use the revision.rev_text_id if it exists.

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

I've uploaded patches for all issues identified in this task. In an effort to keep this task focused on ar_text_id and rev_text_id, I created several related tasks for things that deserve attention and which are related to MCR, but not directly to rev_text_id or ar_text_id:

T220884 (additional DeletePagesForGood extension updates)
T227836 (maintenance script related to DeletePagesForGood, but possibly also generically useful)
T227840 (additional Duplicator extension updates)

While it may be slightly disingenuous to push the additional work to other tasks and declare this task done, I think it does make sense to move the extension work that is not part of the MCR Schema migration critical path to more focused tasks. Focused tasks are good practice, and extension-specific tasks are more likely to be noticed by people interested in those specific extensions.

Change 524560 had a related patch set uploaded (by Daniel Kinzler; owner: Daniel Kinzler):
[mediawiki/core@master] Revision::getRevisionText(): support old schemas

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

It seems like our search for usages in extensions failed to take into account usages in joins. There is quite a bit of code that does this. Critically, the Translate extension heavily depends on rev_text_id in joins.

Here's the code search:
https://codesearch.wmflabs.org/extensions/?q=rev_text_id%7Car_text_id&i=nope&files=&repos=

Change 524593 had a related patch set uploaded (by Daniel Kinzler; owner: Daniel Kinzler):
[mediawiki/extensions/Translate@master] Remove direct access to text table

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

Fjalapeno added a subscriber: BPirkle.
WDoranWMF raised the priority of this task from Medium to High.Jul 23 2019, 6:24 PM
WDoranWMF removed a project: Platform Engineering.
WDoranWMF lowered the priority of this task from High to Medium.Jul 24 2019, 9:46 PM

Change 538113 had a related patch set uploaded (by Ppchelko; owner: Ppchelko):
[mediawiki/extensions/WikimediaMaintenance@master] Remove obsolete scripts that use rev_text_id.

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

Change 538599 had a related patch set uploaded (by Daniel Kinzler; owner: Daniel Kinzler):
[mediawiki/extensions/AbuseFilter@master] Use a BlobStore for stroing var dumps.

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

Change 538599 abandoned by Daniel Kinzler:
Use a BlobStore for storing var dumps.

Reason:
see I22cf698c5be77506727cbd227c67e037a5d89b5c

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

Change 442358 abandoned by Daniel Kinzler:
MCR WIP Remove references to rev_text_id and ar_text_id

Reason:
Obsolete,see I5ea972bb07ca1cfb3a2ad8ef120aef77e460745c

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

Change 524560 abandoned by Daniel Kinzler:
Revision::getRevisionText(): support old schemas

Reason:
per Anomie's comment

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

daniel claimed this task.

All subtasks are resolved. I just went over the remaining open patches for this task and abandoned a few obsolete ones. There are only two patches remaining open, one for the Duplicator extension and one for the DeletePagesForGood extension. Neither of these is supported by WMF (deployed or bundled).

So, it seems we are done here. Closing.

Change 538599 restored by Daimona Eaytoy:
Use a BlobStore for storing var dumps.

Reason:
This can be rebased on top of I4444cada720ab62d187f2dd0c4760697e465f2ff to remove any concern about back-compat stuff.

@daniel would you like to do that yourself, or should I revamp this patch and you/CPT will review?

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

Change 506573 abandoned by BPirkle:
Remove references to db fields rev_text_id and ar_text_id

Reason:
Extremely outdated

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

Change 538599 merged by jenkins-bot:
[mediawiki/extensions/AbuseFilter@master] Use a BlobStore for storing var dumps

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

Change 958530 had a related patch set uploaded (by Seb35; author: BPirkle):

[mediawiki/extensions/DeletePagesForGood@master] Remove references to db fields rev_text_id and ar_text_id

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

Change 958530 merged by jenkins-bot:

[mediawiki/extensions/DeletePagesForGood@master] Remove references to db fields rev_text_id and ar_text_id

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