46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
const { writeJson } = require('./helpers');
|
|
|
|
function buildReadinessState(isDraining, redisClient) {
|
|
const ready = !isDraining && !!redisClient;
|
|
return {
|
|
ready,
|
|
redisState: redisClient ? 'connected' : 'disconnected',
|
|
detail: isDraining ? 'server is draining' : undefined
|
|
};
|
|
}
|
|
|
|
function handleProbeRequest(pathname, res, { isDraining, redisClient }) {
|
|
if (pathname === '/livez') {
|
|
writeJson(res, 200, { status: 'ok' });
|
|
return true;
|
|
}
|
|
|
|
const state = buildReadinessState(isDraining, redisClient);
|
|
|
|
if (pathname === '/readyz') {
|
|
writeJson(res, state.ready ? 200 : 503, {
|
|
status: state.ready ? 'ok' : 'not_ready',
|
|
redis: state.redisState,
|
|
detail: state.detail
|
|
});
|
|
return true;
|
|
}
|
|
|
|
if (pathname === '/health') {
|
|
writeJson(res, 200, {
|
|
status: 'ok',
|
|
redis: state.redisState,
|
|
persistence: 'custom',
|
|
ready: state.ready ? 'true' : 'false',
|
|
detail: state.detail
|
|
});
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
module.exports = {
|
|
handleProbeRequest
|
|
};
|