observer added, database added to improve fault tolerance, config fixed, ping added, port allocation improved, session observer added, multiple checks added, run process improved, process running check added, fault tolerance improved
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
const run_process = require('../modules/run_process')
|
||||
const database = require('../database/database')
|
||||
const {is_proc_running, kill_proc} = require('./run_process')
|
||||
const coordinator = require('./coordinator')
|
||||
|
||||
const observer_timeout = 100
|
||||
|
||||
const start_observer = () => {
|
||||
check()
|
||||
setTimeout(() => start_observer(), observer_timeout)
|
||||
}
|
||||
|
||||
// check sessions in parallel
|
||||
const check_sessions = async (sessions) => {
|
||||
|
||||
await Promise.all(sessions.map(async (session) => {
|
||||
var webrtc_running = is_proc_running(session.webrtc_pid)
|
||||
var app_running = is_proc_running(session.app_pid)
|
||||
|
||||
if (webrtc_running && app_running) {
|
||||
return
|
||||
}
|
||||
|
||||
// if something running kill process and skip remove from database
|
||||
if (!webrtc_running && !app_running) {
|
||||
var close_session_result = await coordinator.close_session(session.session_id)
|
||||
if (close_session_result) {
|
||||
database.remove_running_session(session.session_id)
|
||||
}
|
||||
} else {
|
||||
kill_proc(session.webrtc_pid)
|
||||
kill_proc(session.app_pid)
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
||||
const check = async () => {
|
||||
var sessions = await database.get_running_sessions()
|
||||
|
||||
if (!sessions) {
|
||||
return
|
||||
}
|
||||
|
||||
check_sessions(sessions)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
start_observer
|
||||
}
|
||||
Reference in New Issue
Block a user