Skip to content

Commit e54ac6f

Browse files
authored
Merge pull request #18 from alexleroyross/clean_jobs
Add 'Clean Jobs' to Delayed Jobs
2 parents dd46cf5 + 9671708 commit e54ac6f

File tree

6 files changed

+46
-2
lines changed

6 files changed

+46
-2
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
node_modules/
22
static/
3-
yarn-error.log
3+
yarn-error.log
4+
*.rdb

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function UI() {
1818
router.get('/queues', require('./routes/queues'))
1919
router.put('/queues/:queueName/retry', require('./routes/retryAll'))
2020
router.put('/queues/:queueName/:id/retry', require('./routes/retryJob'))
21+
router.put('/queues/:queueName/clean', require('./routes/cleanAll'))
2122
router.get('/', require('./routes/index'))
2223

2324
app.use(bodyParser.json())

routes/cleanAll.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module.exports = async function handler(req, res) {
2+
try {
3+
const { queueName } = req.params
4+
const { queues } = req.app.locals
5+
6+
const GRACE_TIME_MS = 5000
7+
8+
const queue = queues[queueName]
9+
if (!queue) {
10+
return res.status(404).send({ error: 'queue not found' })
11+
}
12+
13+
await queue.clean(GRACE_TIME_MS, 'delayed')
14+
15+
return res.sendStatus(200)
16+
} catch (e) {
17+
const body = {
18+
error: 'queue error',
19+
details: e.stack,
20+
}
21+
return res.status(500).send(body)
22+
}
23+
}

ui/components/App.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export default function App({ basePath }) {
1111
setSelectedStatuses,
1212
retryJob,
1313
retryAll,
14+
cleanAll,
1415
} = useStore(basePath)
1516

1617
return (
@@ -30,6 +31,7 @@ export default function App({ basePath }) {
3031
selectStatus={setSelectedStatuses}
3132
retryJob={retryJob(queue.name)}
3233
retryAll={retryAll(queue.name)}
34+
cleanAll={cleanAll(queue.name)}
3335
/>
3436
))}
3537
</>

ui/components/Queue.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,9 @@ const actions = {
251251
failed: ({ retryAll }) => {
252252
return <button onClick={retryAll}>Retry all</button>
253253
},
254+
delayed: ({ cleanAll }) => {
255+
return <button onClick={cleanAll}>Clean all</button>
256+
},
254257
}
255258

256259
function QueueActions(props) {
@@ -269,6 +272,7 @@ function QueueActions(props) {
269272
export default function Queue({
270273
retryAll,
271274
retryJob,
275+
cleanAll,
272276
queue,
273277
selectStatus,
274278
selectedStatus,
@@ -291,6 +295,7 @@ export default function Queue({
291295
<>
292296
<QueueActions
293297
retryAll={retryAll}
298+
cleanAll={cleanAll}
294299
queue={queue}
295300
status={selectedStatus}
296301
/>

ui/components/hooks/useStore.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,17 @@ export default function useStore(basePath) {
5454
update,
5555
)
5656

57-
return { state, retryJob, retryAll, selectedStatuses, setSelectedStatuses }
57+
const cleanAll = queueName => () =>
58+
fetch(`${basePath}/queues/${queueName}/clean`, { method: 'put' }).then(
59+
update,
60+
)
61+
62+
return {
63+
state,
64+
retryJob,
65+
retryAll,
66+
cleanAll,
67+
selectedStatuses,
68+
setSelectedStatuses,
69+
}
5870
}

0 commit comments

Comments
 (0)