Update MineGeo domain and harden process supervision
All checks were successful
Deploy MineGeo to Dokploy / deploy (push) Successful in 5m57s

This commit is contained in:
2026-10-15 20:35:39 +05:00
parent 0e4412c99b
commit 1f254b29a2
37 changed files with 101 additions and 70 deletions

View File

@@ -13,12 +13,19 @@ function run(args) {
windowsHide: true,
});
children.push(c);
c.on("exit", (code) => {
c.on("error", (error) => {
if (!stopping) {
console.error(`Unable to start MineGeo process: ${error.message}`);
stop(1);
}
});
c.on("exit", (code, signal) => {
if (!stopping) {
const reason = code === null ? `signal ${signal ?? "unknown"}` : `code ${code}`;
console.error(
`MineGeo process exited (${code}). Shutting down companion process.`,
`MineGeo process exited (${reason}). Shutting down companion process.`,
);
stop(code ?? 1);
stop(code === 0 ? 1 : (code ?? 1));
}
});
return c;
@@ -26,8 +33,30 @@ function run(args) {
function stop(code = 0) {
if (stopping) return;
stopping = true;
for (const c of children) c.kill("SIGTERM");
setTimeout(() => process.exit(code), 500).unref();
const running = (child) => child.exitCode === null && child.signalCode === null;
for (const c of children) {
if (running(c)) c.kill("SIGTERM");
}
const forceStop = setTimeout(() => {
for (const c of children) {
if (running(c)) c.kill("SIGKILL");
}
process.exit(code);
}, 8_000);
Promise.all(
children.map(
(c) =>
new Promise((resolve) => {
if (!running(c)) resolve();
else c.once("close", resolve);
}),
),
).then(() => {
clearTimeout(forceStop);
process.exitCode = code;
});
}
process.on("SIGINT", () => stop());
process.on("SIGTERM", () => stop());

View File

@@ -2,7 +2,7 @@ import assert from "node:assert/strict";
import { randomUUID, randomBytes } from "node:crypto";
import { createClient } from "@supabase/supabase-js";
process.loadEnvFile(".env.local");
const origin = process.argv[2] || "https://minegeo.vercel.app";
const origin = process.argv[2] || "https://minegeo.site";
const db = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.SUPABASE_SECRET_KEY,

View File

@@ -6,7 +6,7 @@ import { createClient } from "@supabase/supabase-js";
import sharp from "sharp";
process.loadEnvFile(".env.local");
const origin = process.argv[2] || "https://minegeo.vercel.app";
const origin = process.argv[2] || "https://minegeo.site";
const db = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.SUPABASE_SECRET_KEY,

View File

@@ -4,7 +4,7 @@ import { mkdir, writeFile } from "node:fs/promises";
import { createClient } from "@supabase/supabase-js";
import sharp from "sharp";
process.loadEnvFile(".env.local");
const origin = new URL(process.argv[2] || "https://minegeo.vercel.app").origin;
const origin = new URL(process.argv[2] || "https://minegeo.site").origin;
const db = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.SUPABASE_SECRET_KEY,

View File

@@ -3,7 +3,7 @@ import { randomUUID, randomBytes } from "node:crypto";
import { mkdir, writeFile } from "node:fs/promises";
import { createClient } from "@supabase/supabase-js";
process.loadEnvFile(".env.local");
const origin = process.argv[2] || "https://minegeo.vercel.app";
const origin = process.argv[2] || "https://minegeo.site";
const db = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.SUPABASE_SECRET_KEY,

View File

@@ -8,7 +8,7 @@ import { datasetSchema, faces } from "../shared/protocol";
import { readMapArchive } from "../shared/map-archive";
process.loadEnvFile(".env.local");
const origin = new URL(process.argv[2] || "https://minegeo.vercel.app").origin;
const origin = new URL(process.argv[2] || "https://minegeo.site").origin;
const db = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SECRET_KEY!,

View File

@@ -5,7 +5,7 @@ import { chromium } from "@playwright/test";
import { createClient } from "@supabase/supabase-js";
process.loadEnvFile(".env.local");
const origin = process.argv[2] || "https://minegeo.vercel.app",
const origin = process.argv[2] || "https://minegeo.site",
reportId = process.argv[3];
assert.match(
reportId ?? "",