import { RequestHandler, Router } from "express"; import { workerRunnerInfo } from "../workRunner"; import { coalesce } from "../lib/initTools"; const PULL_INTERVAL = parseInt(coalesce(process.env.PULL_INTERVAL, "10000")); /** Maximum time between two worker jobs */ const MAX_WORKER_LATENCY = PULL_INTERVAL * 2.5; /** * Router koji se izvršava u slučaju grube greške koja nije obrađena nigdje prije * @param req express request * @param res express response * @param next */ export const healthcheckRouter:RequestHandler = async (req, res, next) => { const workerLatency = Date.now() - workerRunnerInfo.lastWorkTime; if(workerLatency > MAX_WORKER_LATENCY) { const msg = `No work done in ${workerLatency}ms. Last worker status = "${workerRunnerInfo.status}"`; console.warn(msg) res.status(500); res.setHeader('Content-Type', 'text/plain'); res.end(msg); } else { res.status(200); res.setHeader('Content-Type', 'text/plain'); res.end('OK'); } }; export const pingRouter = Router(); pingRouter.get('/', healthcheckRouter);