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); }); }