PHRAS-3525 Admin can change status to canceled for multiple job (#4055)

-  Can change status to canceled for multiple running jobs
-  Add confirm when clear table
- Workers, adding try catch on recordadapter for 
 - Delete Worker
 - Webhook Worker
 - Subdefinition Worker
This commit is contained in:
Aina Sitraka
2022-06-16 18:08:46 +03:00
committed by GitHub
parent 0985c37a15
commit f9d19d6fe5
18 changed files with 476 additions and 127 deletions

View File

@@ -7,6 +7,7 @@ use Alchemy\Phrasea\WorkerManager\Queue\MessagePublisher;
use DateTime;
use Doctrine\DBAL\Driver\Connection;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\ResultSetMappingBuilder;
use Exception;
use PDO;
@@ -391,6 +392,44 @@ class WorkerRunningJobRepository extends EntityRepository
return $qb->getQuery()->getResult();
}
public function updateStatusRunningToCanceledSinceCreated($hour = 0)
{
$sql = '
UPDATE WorkerRunningJob w
SET w.status = :canceled
WHERE w.status = :running
AND (TO_SECONDS(CURRENT_TIMESTAMP()) - TO_SECONDS(w.created)) > :second'
;
$this->_em->getConnection()->executeUpdate($sql, [
'second' => $hour * 3600,
'running' => 'running',
'canceled' => 'canceled'
]);
}
public function getRunningSinceCreated($hour = 0)
{
$rsm = new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('Alchemy\Phrasea\Model\Entities\WorkerRunningJob', 'w');
$selectClause = $rsm->generateSelectClause();
$sql = '
SELECT ' . $selectClause . '
FROM WorkerRunningJob w
WHERE w.status = :running
AND (TO_SECONDS(CURRENT_TIMESTAMP()) - TO_SECONDS(w.created)) > :second'
;
$q = $this->_em->createNativeQuery($sql, $rsm);
$q->setParameters([
'second' => $hour * 3600,
'running' => 'running'
]);
return $q->getResult();
}
/**
* @param $commitId
* @return bool