Inject DeferredUpdatesManager into DeletePage
And remove hacky conditionals for unit tests. Note that the isDeletePageUnitTest hack cannot be removed yet due to other non-DI-friendly dependencies. Change-Id: I215abd01ee8f4ea96539022147f0ce079cdf6c5e
This commit is contained in:
parent
7fe5d4b578
commit
b30b837896
4 changed files with 31 additions and 18 deletions
|
|
@ -2467,7 +2467,8 @@ return [
|
|||
$services->getContentLanguage()->getCode()
|
||||
),
|
||||
$services->getArchivedRevisionLookup(),
|
||||
$services->getRestrictionStore()
|
||||
$services->getRestrictionStore(),
|
||||
$services->getDeferredUpdatesManager()
|
||||
);
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ use BagOStuff;
|
|||
use ChangeTags;
|
||||
use Content;
|
||||
use DeferrableUpdate;
|
||||
use DeferredUpdates;
|
||||
use DeletePageJob;
|
||||
use Exception;
|
||||
use JobQueueGroup;
|
||||
|
|
@ -16,6 +15,7 @@ use ManualLogEntry;
|
|||
use MediaWiki\Cache\BacklinkCacheFactory;
|
||||
use MediaWiki\CommentStore\CommentStore;
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\Deferred\DeferredUpdatesManager;
|
||||
use MediaWiki\Deferred\LinksUpdate\LinksDeletionUpdate;
|
||||
use MediaWiki\Deferred\LinksUpdate\LinksUpdate;
|
||||
use MediaWiki\HookContainer\HookContainer;
|
||||
|
|
@ -91,6 +91,8 @@ class DeletePage {
|
|||
private $namespaceInfo;
|
||||
/** @var ITextFormatter */
|
||||
private $contLangMsgTextFormatter;
|
||||
/** @var DeferredUpdatesManager */
|
||||
private DeferredUpdatesManager $deferredUpdatesManager;
|
||||
|
||||
/** @var bool */
|
||||
private $isDeletePageUnitTest = false;
|
||||
|
|
@ -145,6 +147,7 @@ class DeletePage {
|
|||
* @param BacklinkCacheFactory $backlinkCacheFactory
|
||||
* @param NamespaceInfo $namespaceInfo
|
||||
* @param ITextFormatter $contLangMsgTextFormatter
|
||||
* @param DeferredUpdatesManager $deferredUpdatesManager
|
||||
* @param ProperPageIdentity $page
|
||||
* @param Authority $deleter
|
||||
*/
|
||||
|
|
@ -163,6 +166,7 @@ class DeletePage {
|
|||
BacklinkCacheFactory $backlinkCacheFactory,
|
||||
NamespaceInfo $namespaceInfo,
|
||||
ITextFormatter $contLangMsgTextFormatter,
|
||||
DeferredUpdatesManager $deferredUpdatesManager,
|
||||
ProperPageIdentity $page,
|
||||
Authority $deleter
|
||||
) {
|
||||
|
|
@ -181,6 +185,7 @@ class DeletePage {
|
|||
$this->backlinkCacheFactory = $backlinkCacheFactory;
|
||||
$this->namespaceInfo = $namespaceInfo;
|
||||
$this->contLangMsgTextFormatter = $contLangMsgTextFormatter;
|
||||
$this->deferredUpdatesManager = $deferredUpdatesManager;
|
||||
|
||||
$this->page = $wikiPageFactory->newFromTitle( $page );
|
||||
$this->deleter = $deleter;
|
||||
|
|
@ -838,17 +843,14 @@ class DeletePage {
|
|||
}
|
||||
|
||||
// Update site status
|
||||
if ( !$this->isDeletePageUnitTest ) {
|
||||
// TODO Remove conditional once DeferredUpdates is servicified (T265749)
|
||||
DeferredUpdates::addUpdate( SiteStatsUpdate::factory(
|
||||
[ 'edits' => 1, 'articles' => $countable ? -1 : 0, 'pages' => -1 ]
|
||||
) );
|
||||
$this->deferredUpdatesManager->addUpdate( SiteStatsUpdate::factory(
|
||||
[ 'edits' => 1, 'articles' => $countable ? -1 : 0, 'pages' => -1 ]
|
||||
) );
|
||||
|
||||
// Delete pagelinks, update secondary indexes, etc
|
||||
$updates = $this->getDeletionUpdates( $page, $revRecord );
|
||||
foreach ( $updates as $update ) {
|
||||
DeferredUpdates::addUpdate( $update );
|
||||
}
|
||||
// Delete pagelinks, update secondary indexes, etc
|
||||
$updates = $this->getDeletionUpdates( $page, $revRecord );
|
||||
foreach ( $updates as $update ) {
|
||||
$this->deferredUpdatesManager->addUpdate( $update );
|
||||
}
|
||||
|
||||
// Reparse any pages transcluding this page
|
||||
|
|
@ -886,11 +888,8 @@ class DeletePage {
|
|||
// Reset the page object and the Title object
|
||||
$page->loadFromRow( false, WikiPage::READ_LATEST );
|
||||
|
||||
if ( !$this->isDeletePageUnitTest ) {
|
||||
// TODO Remove conditional once DeferredUpdates is servicified (T265749)
|
||||
// Search engine
|
||||
DeferredUpdates::addUpdate( new SearchUpdate( $page->getId(), $page->getTitle() ) );
|
||||
}
|
||||
// Search engine
|
||||
$this->deferredUpdatesManager->addUpdate( new SearchUpdate( $page->getId(), $page->getTitle() ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -904,6 +903,10 @@ class DeletePage {
|
|||
* @return DeferrableUpdate[]
|
||||
*/
|
||||
public function getDeletionUpdates( WikiPage $page, RevisionRecord $rev ): array {
|
||||
if ( $this->isDeletePageUnitTest ) {
|
||||
// Hack: LinksDeletionUpdate reads from the global state in the constructor
|
||||
return [];
|
||||
}
|
||||
$slotContent = array_map( static function ( SlotRecord $slot ) {
|
||||
return $slot->getContent();
|
||||
}, $rev->getSlots()->getSlots() );
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ use MediaWiki\Collation\CollationFactory;
|
|||
use MediaWiki\CommentStore\CommentStore;
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\Content\IContentHandlerFactory;
|
||||
use MediaWiki\Deferred\DeferredUpdatesManager;
|
||||
use MediaWiki\EditPage\SpamChecker;
|
||||
use MediaWiki\HookContainer\HookContainer;
|
||||
use MediaWiki\Permissions\Authority;
|
||||
|
|
@ -155,6 +156,9 @@ class PageCommandFactory implements
|
|||
/** @var RestrictionStore */
|
||||
private $restrictionStore;
|
||||
|
||||
/** @var DeferredUpdatesManager */
|
||||
private DeferredUpdatesManager $deferredUpdatesManager;
|
||||
|
||||
public function __construct(
|
||||
Config $config,
|
||||
LBFactory $lbFactory,
|
||||
|
|
@ -184,7 +188,8 @@ class PageCommandFactory implements
|
|||
PageUpdaterFactory $pageUpdaterFactory,
|
||||
ITextFormatter $contLangMsgTextFormatter,
|
||||
ArchivedRevisionLookup $archivedRevisionLookup,
|
||||
RestrictionStore $restrictionStore
|
||||
RestrictionStore $restrictionStore,
|
||||
DeferredUpdatesManager $deferredUpdatesManager
|
||||
) {
|
||||
$this->config = $config;
|
||||
$this->lbFactory = $lbFactory;
|
||||
|
|
@ -215,6 +220,7 @@ class PageCommandFactory implements
|
|||
$this->contLangMsgTextFormatter = $contLangMsgTextFormatter;
|
||||
$this->archivedRevisionLookup = $archivedRevisionLookup;
|
||||
$this->restrictionStore = $restrictionStore;
|
||||
$this->deferredUpdatesManager = $deferredUpdatesManager;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -258,6 +264,7 @@ class PageCommandFactory implements
|
|||
$this->backlinkCacheFactory,
|
||||
$this->namespaceInfo,
|
||||
$this->contLangMsgTextFormatter,
|
||||
$this->deferredUpdatesManager,
|
||||
$page,
|
||||
$deleter
|
||||
);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use Generator;
|
|||
use JobQueueGroup;
|
||||
use MediaWiki\Cache\BacklinkCacheFactory;
|
||||
use MediaWiki\Config\ServiceOptions;
|
||||
use MediaWiki\Deferred\DeferredUpdatesManager;
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\Page\DeletePage;
|
||||
|
|
@ -113,6 +114,7 @@ class DeletePageTest extends MediaWikiUnitTestCase {
|
|||
$this->createMock( BacklinkCacheFactory::class ),
|
||||
$nsInfo ?? $this->createMock( NamespaceInfo::class ),
|
||||
$this->createMock( ITextFormatter::class ),
|
||||
$this->createMock( DeferredUpdatesManager::class ),
|
||||
$page,
|
||||
$deleter ?? $this->createMock( Authority::class )
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue