Fix deleting orphaned subscriber tasks in batches
[MAILPOET-6219]
This commit is contained in:
committed by
Aschepikov
parent
9960a56a75
commit
5781351e15
@@ -36,15 +36,19 @@ class DataInconsistencyRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getOrphanedScheduledTasksSubscribersCount(): int {
|
public function getOrphanedScheduledTasksSubscribersCount(): int {
|
||||||
|
$this->createOrphanedScheduledTaskSubscribersTemporaryTables();
|
||||||
|
$count = $this->getOrphanedScheduledTasksSubscribersCountFromTemplateTables();
|
||||||
|
$this->dropOrphanedScheduledTaskSubscribersTemporaryTables();
|
||||||
|
return $count;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getOrphanedScheduledTasksSubscribersCountFromTemplateTables(): int {
|
||||||
$connection = $this->entityManager->getConnection();
|
$connection = $this->entityManager->getConnection();
|
||||||
$stsTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
$stsTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
||||||
|
|
||||||
$this->createOrphanedScheduledTaskSubscribersTemporaryTables();
|
|
||||||
/** @var string $count */
|
/** @var string $count */
|
||||||
$count = $connection->executeQuery("
|
$count = $connection->executeQuery("
|
||||||
SELECT COUNT(*) FROM $stsTable sts WHERE sts.task_id IN (SELECT task_id FROM orphaned_task_ids)
|
SELECT COUNT(*) FROM $stsTable sts WHERE sts.task_id IN (SELECT task_id FROM orphaned_task_ids)
|
||||||
")->fetchOne();
|
")->fetchOne();
|
||||||
$this->dropOrphanedScheduledTaskSubscribersTemporaryTables();
|
|
||||||
return intval($count);
|
return intval($count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,8 +148,6 @@ class DataInconsistencyRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function cleanupOrphanedScheduledTaskSubscribers(): int {
|
public function cleanupOrphanedScheduledTaskSubscribers(): int {
|
||||||
$connection = $this->entityManager->getConnection();
|
|
||||||
$stTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
|
||||||
$stsTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
$stsTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
||||||
$deletedCount = 0;
|
$deletedCount = 0;
|
||||||
|
|
||||||
@@ -164,7 +166,7 @@ class DataInconsistencyRepository {
|
|||||||
['limit' => self::DELETE_ROWS_LIMIT],
|
['limit' => self::DELETE_ROWS_LIMIT],
|
||||||
['limit' => ParameterType::INTEGER]
|
['limit' => ParameterType::INTEGER]
|
||||||
);
|
);
|
||||||
} while ($this->getOrphanedScheduledTasksSubscribersCount() > 0);
|
} while ($this->getOrphanedScheduledTasksSubscribersCountFromTemplateTables() > 0);
|
||||||
$this->dropOrphanedScheduledTaskSubscribersTemporaryTables();
|
$this->dropOrphanedScheduledTaskSubscribersTemporaryTables();
|
||||||
return $deletedCount;
|
return $deletedCount;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user