Skip to content

hemerajs/fastify-graceful-shutdown

Repository files navigation

🏹 fastify-graceful-shutdown

styled with prettier NPM version

Shutdown Fastify graceful asynchronously. By default the fastify close hook is called when SIGINT or SIGTERM was triggered.

Features

  • Graceful and debug friendly shutdown
  • Flush the fastify logger before process exit to avoid losing logs
  • Handlers are called in parallel for faster shutdown

Install

npm install --save fastify-graceful-shutdown

Register plugin

fastify.register(require('fastify-graceful-shutdown'))

Usage

fastify.after(() => {
  fastify.gracefulShutdown(async (signal) => {
    fastify.log.info('Received signal to shutdown: %s', signal)
    await doSomethingAsync()
  })
})

Compatibility

Fastify >=3

Caveats

  • Don't register signal handlers otherwise except with this plugin.
  • Can't be used with a different logger other than Pino because we use the child logger feature to encapsulate the logs.
  • Use fastify onClose hook to release resources in your plugin.
  • The process will be exited after a certain timeout (Default 10 seconds) to protect against stuck process.