Merge "removeOrphanedEvents.php: Also remove echo_target_page rows"

This commit is contained in:
jenkins-bot 2019-04-25 20:30:23 +00:00 committed by Gerrit Code Review
commit 7ec0ac07eb

View file

@ -18,7 +18,8 @@ class RemoveOrphanedEvents extends LoggedUpdateMaintenance {
public function __construct() { public function __construct() {
parent::__construct(); parent::__construct();
$this->addDescription( "Remove rows from echo_event that don't have corresponding rows in echo_notification or echo_email_batch" ); $this->addDescription( "Remove rows from echo_event and echo_target_page that don't have corresponding rows in " .
"echo_notification or echo_email_batch" );
$this->setBatchSize( 500 ); $this->setBatchSize( 500 );
@ -50,19 +51,41 @@ class RemoveOrphanedEvents extends LoggedUpdateMaintenance {
$this->output( "Removing orphaned echo_event rows...\n" ); $this->output( "Removing orphaned echo_event rows...\n" );
$processed = 0; $eventsProcessed = 0;
$targetsProcessed = 0;
foreach ( $iterator as $batch ) { foreach ( $iterator as $batch ) {
$ids = []; $ids = [];
foreach ( $batch as $row ) { foreach ( $batch as $row ) {
$ids[] = $row->event_id; $ids[] = $row->event_id;
} }
$dbw->delete( $dbw->delete( 'echo_event', [ 'event_id' => $ids ] );
'echo_event', $eventsProcessed += $dbw->affectedRows();
[ 'event_id' => $ids ] $dbw->delete( 'echo_target_page', [ 'etp_event' => $ids ] );
$targetsProcessed += $dbw->affectedRows();
$this->output( "Deleted $eventsProcessed orphaned events and $targetsProcessed target_page rows.\n" );
$dbFactory->waitForSlaves();
}
$this->output( "Removing any remaining orphaned echo_target_page rows...\n" );
$iterator = new BatchRowIterator(
$dbr,
[ 'echo_target_page', 'echo_event' ],
'etp_event',
$this->mBatchSize
); );
$iterator->addJoinConditions( [ 'echo_event' => [ 'LEFT JOIN', 'event_id=etp_event' ] ] );
$iterator->addConditions( [ 'event_type' => null ] );
$iterator->addOptions( [ 'DISTINCT' ] );
$processed = 0;
foreach ( $iterator as $batch ) {
$ids = [];
foreach ( $batch as $row ) {
$ids[] = $row->etp_event;
}
$dbw->delete( 'echo_target_page', [ 'etp_event' => $ids ] );
$processed += $dbw->affectedRows(); $processed += $dbw->affectedRows();
$this->output( "Deleted $processed orphaned rows.\n" ); $this->output( "Deleted $processed orphaned target_page rows.\n" );
$dbFactory->waitForSlaves(); $dbFactory->waitForSlaves();
} }