Skip to content

Commit a8afafd

Browse files
authored
Merge pull request #135 from dereuromark/bugfix/duplicates
Fix duplicates on job processing
2 parents 3b9bfe9 + 7336e63 commit a8afafd

File tree

5 files changed

+25
-5
lines changed

5 files changed

+25
-5
lines changed

src/Controller/Admin/QueueController.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,24 @@ public function resetJob($id = null) {
8080

8181
$this->QueuedJobs->reset($id);
8282

83-
$this->Flash->success('Job # ' . $id . ' added');
83+
$this->Flash->success('Job # ' . $id . ' re-added');
84+
85+
return $this->redirect(['action' => 'index']);
86+
}
87+
88+
/**
89+
* @param string|null $id
90+
*
91+
* @return \Cake\Http\Response
92+
*/
93+
public function removeJob($id = null) {
94+
if (!$id) {
95+
throw new NotFoundException();
96+
}
97+
98+
$this->QueuedJobs->delete($id);
99+
100+
$this->Flash->success('Job # ' . $id . ' deleted');
84101

85102
return $this->redirect(['action' => 'index']);
86103
}

src/Model/Table/QueuedJobsTable.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ public function requestJob(array $capabilities, $group = null) {
240240
$job = $this->getConnection()->transactional(function () use ($query, $options, $now) {
241241
$job = $query->find('all', $options)
242242
->enableAutoFields(true)
243+
->epilog('FOR UPDATE')
243244
->first();
244245

245246
if (!$job) {

src/Shell/QueueShell.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ public function runworker() {
185185
$this->out('Job Finished.');
186186
} else {
187187
$this->QueuedJobs->markJobFailed($queuedTask, $failureMessage);
188+
$this->_log('job ' . $queuedTask['job_type'] . ', id ' . $queuedTask['id'] . ' failed and requeued', $pid);
188189
$this->out('Job did not finish, requeued.');
189190
}
190191
} elseif (Configure::read('Queue.exitwhennothingtodo')) {

src/Template/Admin/Queue/index.ctp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ foreach ($pendingDetails as $item) {
3535
$reset = '';
3636
if ($item['failed']) {
3737
$reset = ' ' . $this->Form->postLink('Soft reset', ['action' => 'resetJob', $item['id']], ['confirm' => 'Sure?']);
38+
$reset .= ' ' . $this->Form->postLink('Remove', ['action' => 'removeJob', $item['id']], ['confirm' => 'Sure?']);
3839
}
3940

40-
echo '<li>Created: ' . $item['created'] . '</li>';
41-
echo '<li>Fetched: ' . $item['fetched'] . '</li>';
41+
echo '<li>Created: ' . $this->Time->nice($item['created']) . '</li>';
42+
echo '<li>Fetched: ' . $this->Time->nice($item['fetched']) . '</li>';
4243
echo '<li>Status: ' . $item['status'] . '</li>';
4344
echo '<li>Progress: ' . $this->Number->toPercentage($item['progress'] * 100, 0) . '</li>';
4445
echo '<li>Failures: ' . $item['failed'] . $reset . '</li>';
45-
echo '<li>Failure Message: ' . $item['failure_message'] . '</li>';
46+
echo '<li>Failure Message: ' . h($item['failure_message']) . '</li>';
4647
echo '</ul>';
4748
echo '</li>';
4849
}

src/Template/Admin/Queue/processes.ctp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use Cake\I18n\Time;
1515
foreach ($processes as $process => $timestamp) {
1616
echo '<li>' . $process . ':';
1717
echo '<ul>';
18-
echo '<li>Last run: ' . (new Time($timestamp)) . '</li>';
18+
echo '<li>Last run: ' . $this->Time->nice(new Time($timestamp)) . '</li>';
1919
echo '<li>Kill: ' . $this->Form->postLink('Soft kill', ['action' => 'processes', '?' => ['kill' => $process]], ['confirm' => 'Sure?']) . ' (next loop run)</li>';
2020
echo '</ul>';
2121
echo '</li>';

0 commit comments

Comments
 (0)