use \MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\FakeResultWrapper;
use Wikimedia\Rdbms\IDatabase;
+use Wikimedia\Rdbms\DBError;
+use Wikimedia\Rdbms\DBUnexpectedError;
/**
* Class representing a MediaWiki article and history.
* @return Revision|null
*/
public function getOldestRevision() {
-
// Try using the replica DB first, then try the master
- $continue = 2;
- $db = wfGetDB( DB_REPLICA );
- $revSelectFields = Revision::selectFields();
-
- $row = null;
- while ( $continue ) {
- $row = $db->selectRow(
- [ 'revision' ],
- $revSelectFields,
- [
- 'rev_page' => $this->getId()
- ],
- __METHOD__,
- [
- 'ORDER BY' => 'rev_timestamp ASC',
- 'IGNORE INDEX' => 'rev_timestamp'
- ]
- );
-
- if ( $row ) {
- $continue = 0;
- } else {
- $db = wfGetDB( DB_MASTER );
- $continue--;
- }
+ $rev = $this->mTitle->getFirstRevision();
+ if ( !$rev ) {
+ $rev = $this->mTitle->getFirstRevision( Title::GAID_FOR_UPDATE );
}
-
- return $row ? Revision::newFromRow( $row ) : null;
+ return $rev;
}
/**
MediaWikiServices::getInstance()->getLinkCache()->invalidateTitle( $title );
+ // Invalidate caches of articles which include this page
+ DeferredUpdates::addUpdate( new HTMLCacheUpdate( $title, 'templatelinks' ) );
+
if ( $title->getNamespace() == NS_CATEGORY ) {
// Load the Category object, which will schedule a job to create
// the category table row if necessary. Checking a replica DB is ok