From 609e33837b0b0df5d8eeaa5601e812148886f2e5 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Sat, 12 Apr 2014 21:34:38 +0900 Subject: [PATCH] Gracefully shutdown auth apps. --- lib/roles/auth/ldap.js | 12 +++++++++++- lib/roles/auth/mock.js | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/roles/auth/ldap.js b/lib/roles/auth/ldap.js index 9c0bca31..f0466067 100644 --- a/lib/roles/auth/ldap.js +++ b/lib/roles/auth/ldap.js @@ -1,5 +1,8 @@ +var http = require('http') + var express = require('express') var validator = require('express-validator') +var Promise = require('bluebird') var logger = require('../../util/logger') var requtil = require('../../util/requtil') @@ -7,10 +10,17 @@ var ldaputil = require('../../util/ldaputil') var jwtutil = require('../../util/jwtutil') var pathutil = require('../../util/pathutil') var urlutil = require('../../util/urlutil') +var lifecycle = require('../../util/lifecycle') module.exports = function(options) { var log = logger.createLogger('auth-ldap') , app = express() + , server = Promise.promisifyAll(http.createServer(app)) + + lifecycle.observe(function() { + log.info('Waiting for client connections to end') + return server.closeAsync() + }) app.set('view engine', 'jade') app.set('views', pathutil.resource('auth-ldap/views')) @@ -117,6 +127,6 @@ module.exports = function(options) { } }) - app.listen(options.port) + server.listen(options.port) log.info('Listening on port %d', options.port) } diff --git a/lib/roles/auth/mock.js b/lib/roles/auth/mock.js index 9ebca88e..12fe9d12 100644 --- a/lib/roles/auth/mock.js +++ b/lib/roles/auth/mock.js @@ -1,15 +1,25 @@ +var http = require('http') + var express = require('express') var validator = require('express-validator') +var Promise = require('bluebird') var logger = require('../../util/logger') var requtil = require('../../util/requtil') var jwtutil = require('../../util/jwtutil') var pathutil = require('../../util/pathutil') var urlutil = require('../../util/urlutil') +var lifecycle = require('../../util/lifecycle') module.exports = function(options) { var log = logger.createLogger('auth-mock') , app = express() + , server = Promise.promisifyAll(http.createServer(app)) + + lifecycle.observe(function() { + log.info('Waiting for client connections to end') + return server.closeAsync() + }) app.set('view engine', 'jade') app.set('views', pathutil.resource('auth-mock/views')) @@ -101,6 +111,6 @@ module.exports = function(options) { } }) - app.listen(options.port) + server.listen(options.port) log.info('Listening on port %d', options.port) }