34 lines
994 B
JavaScript
34 lines
994 B
JavaScript
import repl from "node:repl";
|
|
import cluster from "node:cluster";
|
|
import { initDb } from "../db/postgre.js";
|
|
import config from "../config/index.js";
|
|
/**
|
|
* Init worker process
|
|
*/ export async function workerMain() {
|
|
await initDb();
|
|
if (!config.onlyQueueProcessor) {
|
|
// start server
|
|
await import("../server/index.js").then((x)=>x.default());
|
|
}
|
|
// start job queue
|
|
import("../queue/index.js").then((x)=>x.default());
|
|
if (cluster.isWorker) {
|
|
// Send a 'ready' message to parent process
|
|
process.send("ready");
|
|
cluster.worker.on("message", (message, handle)=>{
|
|
if (message == "debug-shell") spawnWorkerShell(handle);
|
|
});
|
|
}
|
|
}
|
|
function spawnWorkerShell(socket) {
|
|
const r = repl.start({
|
|
input: socket,
|
|
output: socket
|
|
});
|
|
r.defineCommand("worker", (iid)=>{
|
|
r.close();
|
|
const id = parseInt(iid.trim());
|
|
cluster.workers[id].send("debug-shell", socket);
|
|
});
|
|
}
|