dc355ad05bd9b8141ac3d6e14cb7c5e7235613d6
ENTSTANDEN AUS EINEM ABSTURZ, DEN ICH SELBST AUSGELOEST HABE
Die Portnummer einer Pruefung wird aus ihrer STELLE IM ALPHABET
abgeleitet. Das ist eindeutig von der Bauart her und deshalb gut --
hat aber eine Nebenwirkung, die in helfer-port.mjs auch ausdruecklich
steht: Kommt eine neue Pruefung dazu, verschieben sich ALLE Nummern
dahinter.
In der Nacht zum 23.09. sind sechs neue Pruefdateien entstanden.
`pruef-bereiche-lesend` rutschte dadurch auf Port 5040, und den haelt
auf diesem Rechner ein Windows-Dienst. Der Lauf endete mit
[uncaughtException] Error: listen EACCES 127.0.0.1:5040
also einem Stapelauszug aus node:net, der wie ein Fehler im Code
aussieht. GEFUNDEN HABE ICH ES DURCH ZUFALL -- ich wollte nur sehen,
ob eine andere Aenderung etwas kaputt gemacht hat.
Nachgemessen habe ich danach ALLE 366 Nummern: Genau eine ist
betroffen. Es lag also kein weiterer Schaden herum. Aber der naechste
Umbau verschiebt wieder alles, und dann faellt es wieder jemandem
zufaellig auf -- oder eben nicht.
WAS DIE PRUEFUNG TUT (unter einer Sekunde)
* Sie leitet die Liste mit DERSELBEN Regel ab wie helfer-port.mjs
(alle pruef-*.mjs im Serverordner, sortiert) -- eine eigene Liste
waere die, die beim Hinzufuegen der naechsten nicht mitwaechst,
also genau der Fehler, den sie verhindern soll.
* Keine Nummer doppelt, keine auf einem gesperrten Port.
* Und sie probiert jeden Port am echten Betriebssystem aus.
BELEGT IST ETWAS ANDERES ALS GESPERRT, und nur eines ist ein Befund:
EACCES Das System gibt den Port nicht her. Das geht nicht
vorbei. Hier muss der Ausweichport frei sein, sonst ist
die betroffene Pruefung auf diesem Rechner nicht
lauffaehig.
EADDRINUSE Jemand hoert gerade darauf -- meist ein Lauf, dessen
Server noch schliesst. Das geht vorbei, und es als
Fehler zu melden waere eine Warnung, die immer kommt.
Dritter Ausgang.
Der Unterschied ist der ganze Punkt. Wuerde beides gleich behandelt,
waere diese Pruefung im Gesamtlauf regelmaessig rot -- und dann liest
niemand mehr, wenn sie einmal recht hat.
Dazu eine Gegenprobe zur Ableitung: Ein bekannter gesperrter Port
(5060, SIP) darf in keiner Nummer vorkommen. Ohne sie waere „keine
liegt auf einem gesperrten" auch dann wahr, wenn die Sperrliste gar
nicht angesehen wird.
AUSWEICHEN und GESPERRT sind dafuer aus helfer-port.mjs ausgeleitet --
eine 4000 in der Pruefung waere die zweite Fassung, und beim naechsten
Mal stuende in einer der beiden eine andere Zahl.
Ergebnis heute: 183 Dateien, 366 Nummern, 0 doppelt, 1 vom System
gesperrt (5040 -> weicht auf 9040 aus, frei). 8 Pruefungen, 0 Fehler.
Co-Authored-By: Claude Opus 5 <[email protected]>
Description
No description provided
726 MiB
Languages
JavaScript
77.7%
CSS
13.1%
HTML
9%
Shell
0.2%