what affect does removeOnComplete have in embedded mode?
#37
-
|
Do I need to set that on |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
|
No, you don't need to set What removeOnComplete does
|
| Scenario | Recommendation |
|---|---|
| Fire-and-forget jobs (don't need results) | removeOnComplete: true |
| High throughput (100k+ jobs/hour) | removeOnComplete: true — saves memory + disk |
| Need job results for chains/flows | removeOnComplete: false (default) |
| Need audit trail / job history | removeOnComplete: false (default) |
Using getParentResult() in FlowProducer |
Must be false — otherwise the result is deleted before the child can read it |
For your use case
Since you're using chains with FlowProducer and SandboxedWorker, I'd recommend keeping the default (false) — at least for jobs that are part of a chain, because child steps need getParentResult() to access previous results.
For standalone jobs that don't need results, you can set it per-job:
await queue.add('cleanup', data, { removeOnComplete: true }); // fire-and-forget
await queue.add('fetch-data', data, { removeOnComplete: false }); // keep result for chainOr set it as a default for the entire queue:
const queue = new Queue('my-queue', {
defaultJobOptions: { removeOnComplete: true },
});TL;DR
Embedded mode works fine with the default (false). Memory is already bounded (50k completed jobs max, auto-eviction). Only set true if you want to aggressively save memory/disk and don't need to query completed jobs.
Beta Was this translation helpful? Give feedback.
No, you don't need to set
removeOnComplete: trueto use embedded mode properly. But understanding what it does helps you decide.What removeOnComplete does
removeOnComplete: false(default)When a job completes:
completedJobsset (max 50,000 entries, FIFO eviction)completedJobsDatamap (max 50,000)jobResultsLRU cache (max 10,000)completedin SQLiteresultstableYou can still query the job afterward:
Memo…