Skip to content

Commit 5ad6eef

Browse files
Fixes yarn rw jobs clear command (#11578)
Closes #11577 --------- Co-authored-by: Josh GM Walker <[email protected]>
1 parent 0890d8f commit 5ad6eef

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

.changesets/11578.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Fixes `yarn rw jobs clear` command (#11578) by @cannikin

packages/jobs/src/bins/__tests__/rw-jobs.test.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { beforeEach, describe, expect, it, vi } from 'vitest'
22

33
import { mockLogger } from '../../core/__tests__/mocks.js'
4-
import { buildNumWorkers, startWorkers } from '../rw-jobs.js'
4+
import { buildNumWorkers, clearQueue, startWorkers } from '../rw-jobs.js'
55

66
vi.mock('@redwoodjs/cli-helpers/loadEnvFiles', () => {
77
return {
@@ -123,3 +123,24 @@ describe('startWorkers()', () => {
123123
)
124124
})
125125
})
126+
127+
describe('clearQueue()', () => {
128+
beforeEach(() => {
129+
vi.resetAllMocks()
130+
})
131+
132+
it('forks a single worker', () => {
133+
const mockWorker = {
134+
on: () => {},
135+
}
136+
mocks.fork.mockImplementation(() => mockWorker)
137+
138+
clearQueue({ logger: mockLogger })
139+
140+
// single worker only
141+
expect(mocks.fork).toHaveBeenCalledWith(
142+
expect.stringContaining('rw-jobs-worker.js'),
143+
['--clear', '--index', '0', '--id', '0'],
144+
)
145+
})
146+
})

packages/jobs/src/bins/rw-jobs.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ setupEnv()
2929

3030
process.title = 'rw-jobs'
3131

32+
const WORKER_PATH = path.join(__dirname, 'rw-jobs-worker.js')
33+
3234
const parseArgs = (argv: string[]) => {
3335
const commandString = hideBin(argv)
3436

@@ -125,7 +127,7 @@ export const startWorkers = ({
125127
}
126128

127129
// fork the worker process
128-
const worker = fork(path.join(__dirname, 'rw-jobs-worker.js'), workerArgs, {
130+
const worker = fork(WORKER_PATH, workerArgs, {
129131
detached: detach,
130132
stdio: detach ? 'ignore' : 'inherit',
131133
env: process.env,
@@ -143,7 +145,7 @@ export const startWorkers = ({
143145
}
144146

145147
// TODO add support for stopping with SIGTERM or SIGKILL?
146-
const stopWorkers = async ({
148+
export const stopWorkers = async ({
147149
numWorkers,
148150
signal = 'SIGINT',
149151
logger,
@@ -174,9 +176,9 @@ const stopWorkers = async ({
174176
}
175177
}
176178

177-
const clearQueue = ({ logger }: { logger: BasicLogger }) => {
179+
export const clearQueue = ({ logger }: { logger: BasicLogger }) => {
178180
logger.warn(`Starting worker to clear job queue...`)
179-
fork(path.join(__dirname, 'rw-jobs-worker.js'), ['--clear'])
181+
fork(WORKER_PATH, ['--clear', '--index', '0', '--id', '0'])
180182
}
181183

182184
const signalSetup = ({

0 commit comments

Comments
 (0)