Skip to content

Commit

Permalink
Merge pull request #44 from sophie0730/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
sophie0730 authored Dec 25, 2023
2 parents 3a58e7f + ee02d16 commit 378f4ff
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 96 deletions.
2 changes: 1 addition & 1 deletion server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"scripts": {
"test": "mocha",
"build": "esbuild pulseTracker.js --bundle --outfile=out.mjs --platform=node --target=node18.18 --format=esm --banner:js='import { createRequire as topLevelCreateRequire } from \"module\"; const require = topLevelCreateRequire(import.meta.url);'",
"package": "bun build ./pulsetracker.js --compile --target node --outfile=./pulsetracker"
"package": "bun build ./pulseTracker.js --compile --target node --outfile=./pulsetracker"
},
"pre-commit": [
"lint"
Expand Down
40 changes: 0 additions & 40 deletions server/pulseTracker-docker.js

This file was deleted.

39 changes: 37 additions & 2 deletions server/pulseTracker.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,40 @@
/* eslint-disable no-undef */
/* eslint-disable no-unused-vars */
import * as server from './app.js';
import * as storeWorker from './workers/store.js';
import * as alertWorker from './workers/alert.js';
import { storeTimeout } from './utils/yml-util.js';

const storeWorkerPath = './workers/store.js';
const alertWorkerPath = './workers/alert.js';

function createWorker(scriptPath) {
const worker = Bun.spawn(['bun', scriptPath], {
onExit(proc, exitCode, signalCode, error) {
console.log(`child process exit, code: ${exitCode}, signal: ${signalCode}`);
console.log('child process restarting...');
createWorker(scriptPath);
},
ipc(message) {
if (message.type === 'heartbeat') {
worker.lastHeartbeat = Date.now();
}
},
stdio: ['inherit', 'inherit', 'inherit'],
});

worker.lastHeartbeat = Date.now();
return worker;
}

const storeWorker = createWorker(storeWorkerPath);
const alertWorker = createWorker(alertWorkerPath);

setInterval(() => {
if (Date.now() - storeWorker.lastHeartbeat > storeTimeout * 1000 + 10000) {
console.log('Heartbeat from store worker is lost. Restarting...');
storeWorker.kill();
}
if (Date.now() - alertWorker.lastHeartbeat > storeTimeout * 1000 + 10000) {
console.log('Heartbeat from alert worker is lost. Restarting...');
alertWorker.kill();
}
}, 5000);
28 changes: 0 additions & 28 deletions server/workers/alert-docker.js

This file was deleted.

6 changes: 6 additions & 0 deletions server/workers/alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,9 @@ function scheduleCheckAlerts() {
}

scheduleCheckAlerts();

function sendHeartbeat() {
process.send({ type: 'heartbeat' });
}

setInterval(sendHeartbeat, TIMEOUT);
25 changes: 0 additions & 25 deletions server/workers/store-docker.js

This file was deleted.

6 changes: 6 additions & 0 deletions server/workers/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,9 @@ function scheduleOperation(operation) {

scheduleOperation(storeExporterMetrices);
scheduleOperation(storeExporterStatus);

function sendHeartbeat() {
process.send({ type: 'heartbeat' });
}

setInterval(sendHeartbeat, TIMEOUT);

0 comments on commit 378f4ff

Please sign in to comment.