feat(assist): centralized health check

feat(assist): changed build
feat(peers): centralized health check
feat(peers): changed build
feat(sourcemaps-reader): centralized health check
feat(sourcemaps-reader): changed build
This commit is contained in:
Taha Yassine Kraiem 2023-03-27 16:11:41 +01:00
parent 95369ce8ef
commit d6bbd76854
13 changed files with 8 additions and 180 deletions

View file

@ -45,22 +45,7 @@ const respond = function (res, data) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({"data": data}));
}
const countSessions = async function () {
let count = 0;
try {
const arr = Array.from(io.sockets.adapter.rooms);
const filtered = arr.filter(room => !room[1].has(room[0]));
for (let i of filtered) {
let {projectKey, sessionId} = extractPeerId(i[0]);
if (projectKey !== null && sessionId !== null) {
count++;
}
}
} catch (e) {
console.error(e);
}
return count;
}
const socketsList = async function (req, res) {
debug && console.log("[WS]looking for all available sessions");
let filters = extractPayloadFromRequest(req);
@ -375,7 +360,6 @@ module.exports = {
socketConnexionTimeout(io);
},
countSessions,
handlers: {
socketsList,
socketsListByProject,

View file

@ -1,5 +1,4 @@
const express = require('express');
const socket = require("../servers/websocket");
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
const PORT = process.env.HEALTH_PORT || 8888;
@ -17,8 +16,7 @@ const check_health = async function (req, res) {
respond(res, {
"health": true,
"details": {
"version": process.env.npm_package_version,
"connectedSessions": await socket.countSessions()
"version": process.env.npm_package_version
}
});
}

View file

@ -11,6 +11,7 @@ servers/peerjs-server.js
servers/sourcemaps-handler.js
servers/sourcemaps-server.js
/utils/geoIP.js
/utils/health.js
/utils/HeapSnapshot.js
/utils/helper.js
/utils/assistHelper.js

View file

@ -1,4 +1,5 @@
rm -rf ./utils/geoIP.js
rm -rf ./utils/health.js
rm -rf ./utils/HeapSnapshot.js
rm -rf ./utils/helper.js
rm -rf ./utils/assistHelper.js

View file

@ -83,22 +83,6 @@ const respond = function (res, data) {
}
}
const countSessions = async function () {
let count = 0;
try {
let rooms = await io.of('/').adapter.allRooms();
for (let i of rooms) {
let {projectKey, sessionId} = extractPeerId(i);
if (projectKey !== undefined && sessionId !== undefined) {
count++;
}
}
} catch (e) {
console.error(e);
}
return count;
}
const socketsList = async function (req, res) {
debug && console.log("[WS]looking for all available sessions");
let filters = await extractPayloadFromRequest(req, res);
@ -433,7 +417,6 @@ module.exports = {
process.exit(2);
});
},
countSessions,
handlers: {
socketsList,
socketsListByProject,

View file

@ -66,23 +66,6 @@ const respond = function (res, data) {
}
}
const countSessions = async function () {
let count = 0;
try {
const arr = Array.from(io.sockets.adapter.rooms);
const filtered = arr.filter(room => !room[1].has(room[0]));
for (let i of filtered) {
let {projectKey, sessionId} = extractPeerId(i[0]);
if (projectKey !== null && sessionId !== null) {
count++;
}
}
} catch (e) {
console.error(e);
}
return count;
}
const socketsList = async function (req, res) {
debug && console.log("[WS]looking for all available sessions");
let filters = await extractPayloadFromRequest(req, res);
@ -396,7 +379,6 @@ module.exports = {
socketConnexionTimeout(io);
},
countSessions,
handlers: {
socketsList,
socketsListByProject,

View file

@ -1,61 +0,0 @@
const express = require('express');
let socket;
if (process.env.redis === "true") {
socket = require("../servers/websocket-cluster");
} else {
socket = require("../servers/websocket");
}
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
const PORT = process.env.HEALTH_PORT || 8888;
const {request_logger} = require("./helper");
const debug = process.env.debug === "1";
const respond = function (res, data) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({"data": data}));
}
const check_health = async function (req, res) {
debug && console.log("[WS]looking for all available sessions");
respond(res, {
"health": true,
"details": {
"version": process.env.npm_package_version,
"connectedSessions": await socket.countSessions(),
"uWebSocket": process.env.uws === "true",
"redis": process.env.redis === "true"
}
});
}
const healthApp = express();
healthApp.use(express.json());
healthApp.use(express.urlencoded({extended: true}));
healthApp.use(request_logger("[healthApp]"));
healthApp.get(['/'], (req, res) => {
res.statusCode = 200;
res.end("healthApp ok!");
}
);
healthApp.get('/health', check_health);
healthApp.get('/shutdown', (req, res) => {
console.log("Requested shutdown");
res.statusCode = 200;
res.end("ok!");
process.kill(1, "SIGTERM");
}
);
const listen_cb = async function () {
console.log(`Health App listening on http://${HOST}:${PORT}`);
console.log('Press Ctrl+C to quit.');
}
module.exports = {
healthApp,
PORT,
listen_cb
};

View file

@ -23,7 +23,6 @@ function build_api(){
cp -R ../peers ../${destination}
cd ../${destination}
cp -R ../assist/utils .
cp ../sourcemap-reader/utils/health.js ./utils/.
# Copy enterprise code
[[ $1 == "ee" ]] && {
cp -rf ../ee/peers/* ./

View file

@ -1,3 +1,2 @@
#!/bin/bash
rsync -avr --exclude=".*" --ignore-existing ../assist/utils ./
cp ../sourcemap-reader/utils/health.js ./utils/.
rsync -avr --exclude=".*" --ignore-existing ../assist/utils ./

View file

@ -3,8 +3,5 @@ node_modules
npm-debug.log
.cache
test.html
/utils/assistHelper.js
/utils/geoIP.js
/utils/HeapSnapshot.js
/utils/helper.js
utils
mappings.wasm

View file

@ -30,7 +30,7 @@ function build_api(){
}
cp -R ../sourcemap-reader ../${destination}
cd ../${destination}
cp -R ../assist/utils/* ./utils/.
cp -R ../assist/utils .
tag=""
# Copy enterprise code
[[ $1 == "ee" ]] && {

View file

@ -1,6 +1,3 @@
#!/bin/bash
rm -rf ./utils/assistHelper.js
rm -rf ./utils/geoIP.js
rm -rf ./utils/HeapSnapshot.js
rm -rf ./utils/helper.js
rm -rf ./utils

View file

@ -1,52 +0,0 @@
const express = require('express');
const HOST = process.env.LISTEN_HOST || '0.0.0.0';
const PORT = process.env.HEALTH_PORT || 8888;
const {request_logger} = require("./helper");
const debug = process.env.debug === "1";
const respond = function (res, data) {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({"data": data}));
}
const check_health = async function (req, res) {
debug && console.log("[WS]looking for all available sessions");
respond(res, {
"health": true,
"details": {
"version": process.env.npm_package_version
}
});
}
const healthApp = express();
healthApp.use(express.json());
healthApp.use(express.urlencoded({extended: true}));
healthApp.use(request_logger("[healthApp]"));
healthApp.get(['/'], (req, res) => {
res.statusCode = 200;
res.end("healthApp ok!");
}
);
healthApp.get('/health', check_health);
healthApp.get('/shutdown', (req, res) => {
console.log("Requested shutdown");
res.statusCode = 200;
res.end("ok!");
process.kill(1, "SIGTERM");
}
);
const listen_cb = async function () {
console.log(`Health App listening on http://${HOST}:${PORT}`);
console.log('Press Ctrl+C to quit.');
}
module.exports = {
healthApp,
PORT,
listen_cb
};