1.0.1 • Published 8 years ago

close_handler v1.0.1

Weekly downloads
12
License
-
Repository
github
Last release
8 years ago

Close Handler

Execute callbacks on node app shutdown

This lib makes easy to execute callbacks when some node app crashes or ends.

This is very useful to avoid locked states for example.

1. Install & configure

$ npm install --save close_handler

2. Create a handler instance

var CloseHandler = require('closer_handler');
var handler = CloseHandler.init();

3. Using handler, register any callbacks to be called on shut down

handler.add(function () {
  // do some code to unlock features
  mongoose.models.Car.update( { }, { $set: { locked: false } }).exec();
});

// or
handler.add(function (err) {
  // a logger
  Logger.log(`App exiting on ${Date.now()} due ${err}.`);
});

Result

When the app for some reason is shut off, each callback will be invoked once and ONLY ONCE!

Deregistering callbacks

Sometimes a block of code, worker or loop ends, and the resources are no longer with a locked state or something similar, thus the callbacks are no longer need, and for that exits a .release( ) instance method:

// empty this handler
handler.release();

This remove all callbacks from that particular instance of the CloseHandler. But there is also a .releaseAll( ) static method:

// empty all handlers
CloseHandler.releaseAll();

This will remove all callbacks from all handlers.

Callback function

If the app crashes, all callbacks function will receive the Error as a first argument. This will be a Error instance. If the app just ends its life cycle, no arguments are passed.

Async code

It's kind of impossible to execute and wait the response from an async function before the execution terminates after the kill signal, besides SIGINT which can be delayed. But you can execute async code if you do not need to do anything with the response. I've tested MongoDb update and insert queries with mongoose, and it works flawless, just call the functions.