2.0 KiB
2.0 KiB
search
das komplette serverjonas search
crawler.py– PostgreSQL-Crawler, baut den Suchindex auflauncher.py– startet/überwacht den Crawler und rollt Updates aus (siehe unten)search/– Suchmaschine darüber (CLI + HTTP-API), siehe search/README.mdweb/– Statistik-Webseite
Rolling Updates (Generation-Mechanismus)
Zentrale Tabelle (eine Zeile, id = 1):
CREATE TABLE IF NOT EXISTS deployment_state (
id INTEGER PRIMARY KEY,
generation BIGINT NOT NULL,
required_version INTEGER NOT NULL
);
Ablauf:
- Einmalig initialisieren:
python3 crawler.py --init-deployment - Launcher starten:
python3 launcher.py(startet + überwacht den Crawler) - Neue Version verteilen:
- Neue
crawler.pymit erhöhterJONASSEARCH_CRAWLER_VERSIONbereitstellen (Update-Quelle im.envsetzen oder Datei nachreleases/<VERSION>/crawler.pylegen) python3 launcher.py --check-update→ neue Version wird gestaget → geprüft (--self-update) → aktiviert → erst dann wird die Generation in PostgreSQL erhöht (--update-deployment)
- Neue
- Alle laufenden alten Crawler merken das beim nächsten sicheren Punkt
(vor jedem relevanten Commit bzw. spätestens nach
JONASSEARCH_UPDATE_CHECK_SECONDSim Hintergrund-Check), rollen ihre offene Transaktion sauber zurück und beenden sich mit Exit-Code 42 – nie mitten in einer Transaktion, kein hartes Killen. - Der jeweilige Launcher erkennt 42 und startet die bereits bereitgestellte neue Version, die die neue Generation beim Start liest.
Exit-Codes des Crawlers: 0 = normal beendet, 1 = Fehler/Crash,
42 = ausschließlich „Update erforderlich".
Nützliche Befehle:
python3 crawler.py --version # installierte Version
python3 launcher.py --status # Generation + Versionen anzeigen
python3 crawler.py --self-update 2 # gestagte Release prüfen (ohne zu aktivieren)
python3 crawler.py --update-deployment 2 # Generation+1 und required_version=2 setzen