mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-19 04:17:44 +00:00
support drain/undrain feature server from cluster
This commit is contained in:
24
lib/http-routes/api/cluster.js
Normal file
24
lib/http-routes/api/cluster.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const router = require('express').Router();
|
||||
const {srf} = require('../../..');
|
||||
|
||||
router.post('/drain', async(req, res) => {
|
||||
const {logger} = req.app.locals;
|
||||
const {setDryUpCalls} = srf.locals;
|
||||
|
||||
logger.info('Received drain request via HTTP API');
|
||||
setDryUpCalls();
|
||||
|
||||
res.sendStatus(201);
|
||||
});
|
||||
|
||||
router.post('/undrain', async(req, res) => {
|
||||
const {logger} = req.app.locals;
|
||||
const {clearDryUpCalls} = srf.locals;
|
||||
|
||||
logger.info('Received undrain request via HTTP API');
|
||||
clearDryUpCalls();
|
||||
|
||||
res.sendStatus(201);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
@@ -8,5 +8,6 @@ api.use('/enqueue', require('./enqueue'));
|
||||
|
||||
api.use('/messaging', require('./messaging')); // inbound SMS
|
||||
api.use('/createMessage', require('./create-message')); // outbound SMS (REST)
|
||||
api.use('/cluster', require('./cluster'));
|
||||
|
||||
module.exports = api;
|
||||
|
||||
@@ -71,7 +71,7 @@ function installSrfLocals(srf, logger, {
|
||||
logger.debug('installing srf locals');
|
||||
assert(!srf.locals.dbHelpers);
|
||||
const {tracer} = srf.locals.otel;
|
||||
const {getSBC, lifecycleEmitter} = require('./sbc-pinger')(logger);
|
||||
const {getSBC, lifecycleEmitter, setDryUpCalls, clearDryUpCalls} = require('./sbc-pinger')(logger);
|
||||
const StatsCollector = require('@jambonz/stats-collector');
|
||||
const stats = srf.locals.stats = new StatsCollector(logger);
|
||||
|
||||
@@ -285,6 +285,8 @@ function installSrfLocals(srf, logger, {
|
||||
},
|
||||
parentLogger: logger,
|
||||
getSBC,
|
||||
setDryUpCalls,
|
||||
clearDryUpCalls,
|
||||
getSmpp: () => {
|
||||
return SMPP_URL;
|
||||
},
|
||||
|
||||
@@ -166,9 +166,23 @@ module.exports = (logger) => {
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
const setDryUpCalls = () => {
|
||||
logger.info('setting dryUpCalls flag');
|
||||
dryUpCalls = true;
|
||||
};
|
||||
|
||||
const clearDryUpCalls = () => {
|
||||
if (lifecycleEmitter.operationalState !== LifeCycleEvents.ScaleIn) {
|
||||
logger.info('clearing dryUpCalls flag');
|
||||
dryUpCalls = false;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
lifecycleEmitter,
|
||||
getSBC: () => sbcs[idxSbc++ % sbcs.length]
|
||||
getSBC: () => sbcs[idxSbc++ % sbcs.length],
|
||||
setDryUpCalls,
|
||||
clearDryUpCalls,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user