-
Notifications
You must be signed in to change notification settings - Fork 9.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(core): Add N8N_GRACEFUL_SHUTDOWN_TIMEOUT env var #8068
Conversation
Add generic N8N_GRACEFUL_SHUTDOWN_TIMEOUT which controls how long n8n process will wait for graceful exit before exitting forcefully. This variables replaces the QUEUE_WORKER_TIMEOUT variable that was used for worker process. DEPRECATED: QUEUE_WORKER_TIMEOUT deprected QUEUE_WORKER_TIMEOUT environment variable has been replaced with N8N_GRACEFUL_SHUTDOWN_TIMEOUT.
@@ -44,7 +44,9 @@ export abstract class BaseCommand extends Command { | |||
* How long to wait for graceful shutdown before force killing the process. | |||
* Subclasses can override this value. | |||
*/ | |||
protected gracefulShutdownTimeoutInS: number = 30; | |||
protected gracefulShutdownTimeoutInS: number = config.get( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can use getEnv
to infer the type, ref. #2656
packages/cli/src/config/schema.ts
Outdated
@@ -497,6 +497,13 @@ export const schema = { | |||
default: 'dev', | |||
env: 'N8N_RELEASE_TYPE', | |||
}, | |||
|
|||
gracefulShutdownTimeoutInS: { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: InS
→ I don't see any other env vars specifying the time unit in the name. Perhaps for consistency we should stick to this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Makes sense, tho I would like us to use suffixes when the value has a unit and it's not obviously clear what it is. Removed the suffix.
@@ -439,7 +439,7 @@ export const schema = { | |||
env: 'QUEUE_RECOVERY_INTERVAL', | |||
}, | |||
gracefulShutdownTimeout: { | |||
doc: 'How long should n8n wait for running executions before exiting worker process (seconds)', | |||
doc: '[DEPRECATED] (Use N8N_GRACEFUL_SHUTDOWN_TIMEOUT instead) How long should n8n wait for running executions before exiting worker process (seconds)', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we update the docs as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes: n8n-io/n8n-docs#1792
Passing run #3381 ↗︎
Details:
Review all test suite changes for PR #8068 ↗︎ |
✅ All Cypress E2E specs passed |
# [1.22.0](https://github.com/n8n-io/n8n/compare/[email protected]@1.22.0) (2023-12-21) ### Bug Fixes * **core:** Close db connection gracefully when exiting ([#8045](#8045)) ([e69707e](e69707e)) * **core:** Consider timeout in shutdown an error ([#8050](#8050)) ([4cae976](4cae976)) * **core:** Do not display error when stopping jobless execution in queue mode ([#8007](#8007)) ([8e6b951](8e6b951)) * **core:** Fix shutdown if terminating before hooks are initialized ([#8047](#8047)) ([6ae2f5e](6ae2f5e)) * **core:** Handle multiple termination signals correctly ([#8046](#8046)) ([67bd8ad](67bd8ad)) * **core:** Initialize queue once in queue mode ([#8025](#8025)) ([53c0b49](53c0b49)) * **core:** Prevent axios from force setting a form-urlencoded content-type ([#8117](#8117)) ([bba9576](bba9576)) * **core:** Remove circular references before serializing executions in public API ([#8043](#8043)) ([989888d](989888d)) * **core:** Restore workflow ID during execution creation ([#8031](#8031)) ([c5e6ba8](c5e6ba8)) * **core:** Use relative imports for dynamic imports in SecurityAuditService ([#8086](#8086)) ([785bf99](785bf99)) * **core:** Stop binary data restoration from preventing execution from finishing ([#8082](#8082)) ([5ffff1b](5ffff1b)) * **editor:** Add back credential `use` permission ([#8023](#8023)) ([329e5bf](329e5bf)) * **editor:** Cleanup Executions page component ([#8053](#8053)) ([2689c37](2689c37)) * **editor:** Disable auto scroll and list size check when clicking on executions ([#7983](#7983)) ([fcb8b91](fcb8b91)) * **editor:** Ensure execution data overrides pinned data when copying in executions view ([#8009](#8009)) ([1d1cb0d](1d1cb0d)) * **editor:** Fix copy/paste issue when switch node is in workflow ([#8103](#8103)) ([4b86926](4b86926)) * **editor:** Make keyboard shortcuts more strict; don't accept extra Ctrl/Alt/Shift keys ([#8024](#8024)) ([8df49e1](8df49e1)) * **editor:** Show credential share info only to appropriate users ([#8020](#8020)) ([b29b4d4](b29b4d4)) * **editor:** Turn off executions list auto-refresh after leaving the page ([#8005](#8005)) ([e3c363d](e3c363d)) * **editor:** Update image sizes in template description not to be full width always ([#8037](#8037)) ([63a6e7e](63a6e7e)) * **ActiveCampaign Node:** Fix pagination issue when loading tags ([#8017](#8017)) ([1943857](1943857)) * **HTTP Request Node:** Do not create circular references in HTTP request node output ([#8030](#8030)) ([5b7ea16](5b7ea16)) * Upgrade axios to address CVE-2023-45857 ([#7713](#7713)) ([64eb9bb](64eb9bb)) ### Features * Add option to `returnIntermediateSteps` for AI agents ([#8113](#8113)) ([7806a65](7806a65)) * **core:** Add config option to prefer GET request over LIST when using Hashicorp Vault ([#8049](#8049)) ([439a22d](439a22d)) * **core:** Add N8N_GRACEFUL_SHUTDOWN_TIMEOUT env var ([#8068](#8068)) ([614f488](614f488)) * **editor:** Add lead enrichment suggestions to workflow list ([#8042](#8042)) ([36a923c](36a923c)) * **editor:** Finalize workers view ([#8052](#8052)) ([edfa784](edfa784)) * **editor:** Gracefully ignore invalid payloads in postMessage handler ([#8096](#8096)) ([9d22c7a](9d22c7a)) * **editor:** Upgrade frontend tooling to address a few vulnerabilities ([#8100](#8100)) ([19b7f1f](19b7f1f)) * **Filter Node:** Overhaul UI by adding the new filter component ([#8016](#8016)) ([3d53052](3d53052)) * **Respond to Webhook Node:** Overhaul with improvements like returning all items ([#8093](#8093)) ([32d397e](32d397e)) ### Performance Improvements * **editor:** Improve canvas rendering performance ([#8022](#8022)) ([b780436](b780436)) Co-authored-by: ivov <[email protected]>
Got released with |
Summary
Add generic N8N_GRACEFUL_SHUTDOWN_TIMEOUT which controls how long n8n process will wait for graceful exit before exitting forcefully. This variables replaces the QUEUE_WORKER_TIMEOUT variable that was used for worker process.
DEPRECATED: QUEUE_WORKER_TIMEOUT deprected
QUEUE_WORKER_TIMEOUT environment variable has been replaced with N8N_GRACEFUL_SHUTDOWN_TIMEOUT.
Related tickets and issues
https://linear.app/n8n/issue/ADO-1614/unify-graceful-shutdown-timeout
Review / Merge checklist
(no-changelog)
otherwise. (conventions)