26 lines
649 B
JavaScript
26 lines
649 B
JavaScript
const fs = require('fs');
|
|
const config = require('../src/config');
|
|
|
|
try {
|
|
const raw = fs.readFileSync(config.heartbeatFile, 'utf8');
|
|
const heartbeat = JSON.parse(raw);
|
|
const ageMs = Date.now() - new Date(heartbeat.timestamp).getTime();
|
|
const maxAgeMs = Math.max(config.pollIntervalMs * 3, 120000);
|
|
|
|
if (!heartbeat.timestamp || Number.isNaN(ageMs) || ageMs > maxAgeMs) {
|
|
console.error('Heartbeat is stale');
|
|
process.exit(1);
|
|
}
|
|
|
|
if (heartbeat.status === 'fatal') {
|
|
console.error('Parser is in fatal state');
|
|
process.exit(1);
|
|
}
|
|
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error(error.message);
|
|
process.exit(1);
|
|
}
|
|
|