diff --git a/src/View/Helper/QueueHelper.php b/src/View/Helper/QueueHelper.php index 9977c79f..b225062d 100644 --- a/src/View/Helper/QueueHelper.php +++ b/src/View/Helper/QueueHelper.php @@ -86,30 +86,6 @@ public function isRequeued(QueuedJob $queuedJob): bool { return $taskConfig && $queuedJob->attempts <= $taskConfig['retries']; } - /** - * Returns true if job has been manually restarted (reset). - * - * A restarted job has been fetched and has attempts, but no failure_message - * (the failure_message was cleared when the job was reset). - * - * @param \Queue\Model\Entity\QueuedJob $queuedJob - * - * @return bool - */ - public function isRestarted(QueuedJob $queuedJob): bool { - if ($queuedJob->completed || !$queuedJob->fetched) { - return false; - } - - // Must have attempts (was previously run) - if ($queuedJob->attempts < 1) { - return false; - } - - // Must NOT have a failure_message (it was cleared by reset) - return !$queuedJob->failure_message; - } - /** * Returns failure status (message) if applicable. * @@ -122,8 +98,11 @@ public function failureStatus(QueuedJob $queuedJob): ?string { return null; } + // No failure message yet: the job is simply running its current attempt, + // which is indistinguishable from a reset-and-rerun job, so there is no + // distinct failure status to report. if (!$queuedJob->failure_message) { - return __d('queue', 'Restarted'); + return null; } $taskConfig = $this->taskConfig($queuedJob->job_task); diff --git a/templates/Admin/Queue/index.php b/templates/Admin/Queue/index.php index 5ba9d6fe..b99c7be8 100644 --- a/templates/Admin/Queue/index.php +++ b/templates/Admin/Queue/index.php @@ -219,7 +219,9 @@
element('Queue.Queue/stats_card', [ - 'title' => __d('queue', 'Failed'), + // Counts every unfinished job with a failure_message: still-retrying + // (requeued) ones as well as terminally failed/aborted ones. + 'title' => __d('queue', 'Requeued/Failed'), 'count' => $failedJobs, 'icon' => 'times-circle', 'color' => 'danger', @@ -301,11 +303,6 @@
: Queue->attempts($pendingJob) ?>
- Queue->isRestarted($pendingJob)): ?> - - - -
: Queue->attempts($pendingJob) ?>
fetched): ?> diff --git a/templates/Admin/QueuedJobs/index.php b/templates/Admin/QueuedJobs/index.php index bbc2df60..058463a4 100644 --- a/templates/Admin/QueuedJobs/index.php +++ b/templates/Admin/QueuedJobs/index.php @@ -153,10 +153,6 @@ - Queue->isRestarted($queuedJob)): ?> - - - fetched): ?> diff --git a/templates/Admin/QueuedJobs/view.php b/templates/Admin/QueuedJobs/view.php index 63fee1d7..0d696dc5 100644 --- a/templates/Admin/QueuedJobs/view.php +++ b/templates/Admin/QueuedJobs/view.php @@ -254,10 +254,6 @@ - Queue->isRestarted($queuedJob)): ?> - - - fetched): ?> diff --git a/tests/TestCase/View/Helper/QueueHelperTest.php b/tests/TestCase/View/Helper/QueueHelperTest.php index 0c3b6cbf..c698e847 100644 --- a/tests/TestCase/View/Helper/QueueHelperTest.php +++ b/tests/TestCase/View/Helper/QueueHelperTest.php @@ -105,7 +105,7 @@ public function testFailureStatus() { $queuedJob->failure_message = null; $result = $this->QueueHelper->failureStatus($queuedJob); - $this->assertSame('Restarted', $result); + $this->assertNull($result); $queuedJob->attempts = 999; $queuedJob->failure_message = 'Foo'; @@ -221,66 +221,6 @@ public function testIsRequeued(): void { $this->assertFalse($this->QueueHelper->isRequeued($queuedJob)); } - /** - * @return void - */ - public function testIsRestarted(): void { - // Not fetched - not restarted - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => null, - 'attempts' => 2, - 'failure_message' => null, - ]); - $this->assertFalse($this->QueueHelper->isRestarted($queuedJob)); - - // Completed - not restarted - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => new DateTime('-1 hour'), - 'completed' => new DateTime(), - 'attempts' => 2, - 'failure_message' => null, - ]); - $this->assertFalse($this->QueueHelper->isRestarted($queuedJob)); - - // No attempts - not restarted (first run) - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => new DateTime('-1 hour'), - 'attempts' => 0, - 'failure_message' => null, - ]); - $this->assertFalse($this->QueueHelper->isRestarted($queuedJob)); - - // Has failure_message - not restarted (is requeued or failed) - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => new DateTime('-1 hour'), - 'attempts' => 2, - 'failure_message' => 'Error', - ]); - $this->assertFalse($this->QueueHelper->isRestarted($queuedJob)); - - // Fetched, has attempts, NO failure_message - IS restarted - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => new DateTime('-1 hour'), - 'attempts' => 2, - 'failure_message' => null, - ]); - $this->assertTrue($this->QueueHelper->isRestarted($queuedJob)); - - // Also restarted with just 1 attempt - $queuedJob = new QueuedJob([ - 'job_task' => 'Queue.Example', - 'fetched' => new DateTime('-1 hour'), - 'attempts' => 1, - 'failure_message' => null, - ]); - $this->assertTrue($this->QueueHelper->isRestarted($queuedJob)); - } - /** * @return void */