Support graceful shutdowns (#36909)
## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` ## Feature - [ ] Implements an existing feature request or RFC. Make sure the feature request has been accepted for implementation before opening a PR. - [x] Related issues linked using [19693](https://github.com/vercel/next.js/discussions/19693) - [ ] Integration tests added - [ ] Documentation added - [ ] Telemetry added. In case of a feature if it's used or not. - [ ] Errors have helpful link attached, see `contributing.md` ## Documentation / Examples - [ x] Make sure the linting passes by running `yarn lint` Closes #29959
This commit is contained in:
parent
b11d4411e0
commit
7b83c19da5
2 changed files with 28 additions and 2 deletions
|
@ -98,6 +98,29 @@ Next.js will automatically load the latest version of your application in the ba
|
|||
|
||||
**Note:** If a new page (with an old version) has already been prefetched by `next/link`, Next.js will use the old version. Navigating to a page that has _not_ been prefetched (and is not cached at the CDN level) will load the latest version.
|
||||
|
||||
## Manual Graceful shutdowns
|
||||
|
||||
Sometimes you might want to run some cleanup code on process signals like `SIGTERM` or `SIGINT`.
|
||||
|
||||
You can do that by setting the env variable `NEXT_MANUAL_SIG_HANDLE` to `true` and then register a handler for that signal inside your `_document.js` file.
|
||||
|
||||
```js
|
||||
// pages/_document.js
|
||||
|
||||
if (process.env.NEXT_MANUAL_SIG_HANDLE) {
|
||||
// this should be added in your custom _document
|
||||
process.on('SIGTERM', () => {
|
||||
console.log('Received SIGTERM: ', 'cleaning up')
|
||||
process.exit(0)
|
||||
})
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
console.log('Received SIGINT: ', 'cleaning up')
|
||||
process.exit(0)
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## Related
|
||||
|
||||
For more information on what to do next, we recommend the following sections:
|
||||
|
|
|
@ -129,8 +129,11 @@ if (process.versions.pnp === '3') {
|
|||
}
|
||||
|
||||
// Make sure commands gracefully respect termination signals (e.g. from Docker)
|
||||
process.on('SIGTERM', () => process.exit(0))
|
||||
process.on('SIGINT', () => process.exit(0))
|
||||
// Allow the graceful termination to be manually configurable
|
||||
if (!process.env.NEXT_MANUAL_SIG_HANDLE) {
|
||||
process.on('SIGTERM', () => process.exit(0))
|
||||
process.on('SIGINT', () => process.exit(0))
|
||||
}
|
||||
|
||||
commands[command]()
|
||||
.then((exec) => exec(forwardedArgs))
|
||||
|
|
Loading…
Reference in a new issue