diff --git a/app.js b/app.js index fc8ad7dd..8ac94526 100644 --- a/app.js +++ b/app.js @@ -106,16 +106,28 @@ const disconnect = () => { }); }; -process.on('SIGUSR2', handle); process.on('SIGTERM', handle); function handle(signal) { const {removeFromSet} = srf.locals.dbHelpers; + srf.locals.disabled = true; + logger.info(`got signal ${signal}`); const setName = `${(process.env.JAMBONES_CLUSTER_ID || 'default')}:active-fs`; logger.info(`got signal ${signal}, removing ${srf.locals.localSipAddress} from set ${setName}`); removeFromSet(setName, srf.locals.localSipAddress); + if (setName && srf.locals.localSipAddress) { + logger.info(`got signal ${signal}, removing ${srf.locals.localSipAddress} from set ${setName}`); + removeFromSet(setName, srf.locals.localSipAddress); + } removeFromSet(FS_UUID_SET_NAME, srf.locals.fsUUID); srf.locals.disabled = true; + if (process.env.K8S) { + srf.locals.lifecycleEmitter.operationalState = LifeCycleEvents.ScaleIn; + } + if (getCount() === 0) { + logger.info('no calls in progress, exiting'); + process.exit(0); + } } if (process.env.JAMBONZ_CLEANUP_INTERVAL_MINS) { diff --git a/lib/utils/sbc-pinger.js b/lib/utils/sbc-pinger.js index ae0b5509..6c4b935d 100644 --- a/lib/utils/sbc-pinger.js +++ b/lib/utils/sbc-pinger.js @@ -75,6 +75,9 @@ module.exports = (logger) => { } })(); } + else if (process.env.K8S) { + lifecycleEmitter.scaleIn = () => process.exit(0); + } async function pingProxies(srf) { if (process.env.NODE_ENV === 'test') return;