Ein Werkzeug, das abstuerzt, soll abstuerzen
Das Videowerkzeug hat zweimal zwoelf Minuten lang an nichts
gearbeitet. Es war nicht langsam, es war tot: Beim Fuellen des
Medienregals warf es 'no such table: material', und index.js faengt
uncaughtException ab und protokolliert nur. Fuer den Betrieb ist das
richtig -- ein Fehler in einer Nebensache darf die Website nicht
offline nehmen. Wer die Datei importiert, erbt das Netz, und der
laufende HTTP-Server haelt den Prozess danach am Leben.
Von aussen sieht das aus wie 'rechnet noch'. Ein Stillstand ist
schlimmer als ein Fehlschlag: Ein Fehlschlag ist rot und steht da.
Genau diese Falle steht seit dem 06.09.2026 in den Projektregeln
('Auffangnetze im Betrieb sind Fallen in der Pruefung'), und ich bin
trotzdem hineingelaufen -- weil ich das Werkzeug nicht als Pruefung
verbucht habe, sondern als Werkzeug. Der Unterschied ist keiner:
Entscheidend ist, wer index.js importiert.
process.on ERGAENZT, es ersetzt nicht. Die Meldung von index.js kommt
weiterhin, danach endet der Lauf mit Rueckgabewert 8.
Beide Richtungen nachgefahren: PROBE_ABSTURZ=ja endet sofort mit 8,
ein normaler Lauf endet mit 0 und einem fertigen Video. Ein Netz, das
man nie hat reissen sehen, ist eine Hoffnung.
This commit is contained in:
@@ -112,6 +112,34 @@ const express = (await import("express")).default;
|
||||
const ec = express.response.cookie;
|
||||
express.response.cookie = function (n, w, o) { return ec.call(this, n, w, { ...(o || {}), secure: false }); };
|
||||
await import("./index.js");
|
||||
|
||||
/* ==== EIGENE ZUHOERER NEBEN DIE VON index.js ==========================
|
||||
(27.09.2026, nachdem dieses Werkzeug zweimal zwoelf Minuten lang
|
||||
an nichts gearbeitet hat.)
|
||||
|
||||
index.js spannt am Ende ein Auffangnetz: `uncaughtException` und
|
||||
`unhandledRejection` werden nur PROTOKOLLIERT. Fuer den Betrieb ist
|
||||
das genau richtig -- ein Fehler in einer Nebensache darf die
|
||||
Website nicht offline nehmen.
|
||||
|
||||
Wer die Datei importiert, erbt das Netz. Beim ersten Versuch, das
|
||||
Medienregal zu fuellen, warf das Werkzeug "no such table:
|
||||
material". Der Fehler wurde aufgeschrieben, sonst nichts -- und
|
||||
der laufende HTTP-Server hielt den Prozess danach am Leben. Von
|
||||
aussen sah das aus wie "rechnet noch"; tatsaechlich war schon
|
||||
alles vorbei. Genau diese Falle steht seit dem 06.09.2026 in den
|
||||
Projektregeln, und ich bin trotzdem hineingelaufen.
|
||||
|
||||
`process.on` ERGAENZT, es ersetzt nicht: Die Meldung von index.js
|
||||
kommt weiterhin, danach beendet dieser Zuhoerer den Lauf. Ein
|
||||
Werkzeug, das abstuerzt, soll abstuerzen. */
|
||||
for (const art of ["uncaughtException", "unhandledRejection"]) {
|
||||
process.on(art, (f) => {
|
||||
console.error(`
|
||||
ABBRUCH (${art}): ${f?.stack || f}`);
|
||||
process.exit(8);
|
||||
});
|
||||
}
|
||||
await new Promise((r) => setTimeout(r, 1200));
|
||||
|
||||
/* ---------- Sprechen mit Hausadresse ---------------------------------- */
|
||||
@@ -227,6 +255,15 @@ async function eintrag(wer, brett, art, titel, text) {
|
||||
return id;
|
||||
}
|
||||
|
||||
/* GEGENPROBE ZUM ABBRUCH (PROBE_ABSTURZ=ja): Wirft mitten im Lauf.
|
||||
Ohne die Zuhoerer oben bliebe der Prozess danach stehen, bis
|
||||
jemand ihn beendet -- mit ihnen endet er sofort und mit
|
||||
Rueckgabewert 8. Ein Netz, das man nie hat reissen sehen, ist eine
|
||||
Hoffnung. */
|
||||
if (process.env.PROBE_ABSTURZ === "ja") {
|
||||
setTimeout(() => { throw new Error("Probe: so sieht ein Absturz aus"); }, 50);
|
||||
}
|
||||
|
||||
console.log("Fuelle die Bretter …");
|
||||
|
||||
/* Die Reihenfolge ist Absicht: „Stamm" verlangt drei eigene
|
||||
|
||||
Reference in New Issue
Block a user