added __heartbeat__

This commit is contained in:
Danny Coates 2017-06-23 11:14:33 -07:00
parent 2691dfcf2f
commit d247e0ba31
No known key found for this signature in database
GPG key ID: 4C442633C62E00CB
2 changed files with 31 additions and 8 deletions

View file

@ -16,10 +16,13 @@ const log = mozlog('portal.server');
const app = express();
app.engine('handlebars', exphbs({
defaultLayout: 'main',
partialsDir: 'views/partials/'
}));
app.engine(
'handlebars',
exphbs({
defaultLayout: 'main',
partialsDir: 'views/partials/'
})
);
app.set('view engine', 'handlebars');
app.use(helmet());
@ -27,7 +30,6 @@ app.use(busboy());
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, '../public')));
app.get('/', (req, res) => {
res.render('index', {
shouldRenderAnalytics: notLocalHost,
@ -150,6 +152,10 @@ app.get('/__lbheartbeat__', (req, res) => {
res.sendStatus(200);
});
app.get('/__heartbeat__', (req, res) => {
storage.ping().then(() => res.sendStatus(200), () => res.sendStatus(500));
});
app.listen(conf.listen_port, () => {
log.info('startServer:', `Portal app listening on port ${conf.listen_port}!`);
});

View file

@ -14,7 +14,8 @@ const log = mozlog('portal.storage');
const redis = require('redis');
const redis_client = redis.createClient({
host: conf.redis_host
host: conf.redis_host,
connect_timeout: 10000
});
redis_client.on('error', err => {
@ -29,7 +30,8 @@ if (notLocalHost) {
get: awsGet,
set: awsSet,
delete: awsDelete,
forceDelete: awsForceDelete
forceDelete: awsForceDelete,
ping: awsPing
};
} else {
module.exports = {
@ -39,7 +41,8 @@ if (notLocalHost) {
get: localGet,
set: localSet,
delete: localDelete,
forceDelete: localForceDelete
forceDelete: localForceDelete,
ping: localPing
};
}
@ -120,6 +123,14 @@ function localForceDelete(id) {
});
}
function localPing() {
return new Promise((resolve, reject) => {
redis_client.ping(err => {
return err ? reject() : resolve();
});
});
}
function awsLength(id) {
const params = {
Bucket: conf.s3_bucket,
@ -211,3 +222,9 @@ function awsForceDelete(id) {
});
});
}
function awsPing() {
return localPing().then(() =>
s3.headBucket({ Bucket: conf.s3_bucket }).promise()
);
}