Document released stop fix and pending Gemini acceptance

This commit is contained in:
admin committed 2026-09-15 23:31:56 +02:00
1 parent 3730ab4676
commit 04283a607c
4 files changed
+98

No files matched your search

+24
View File
@@ -1,5 +1,11 @@
# Dokumentation app-backup v2 # Dokumentation app-backup v2
**Aktualisiert am 15. September 2026:** Das Code-Paket `3730ab4676a5` enthält
den lokal geprüften Schutz laufender Writer-Stopps gegen konkurrierende
Healthcheck-Aufträge. Code und Paket sind bereitgestellt; Installation und neue
Abnahme auf Gemini sind noch nicht bestätigt. Aktuelle Deployment-Befehle und
Erfolgskriterien stehen in der [Update-Anleitung](UPDATE_ANLEITUNG.md#deployment-des-bereitgestellten-pakets-3730ab4676a5).
Stand des Reviews: 10. September 2026. Untersucht wurde der Gitea-Stand `099688e` einschließlich Backup, Restore, Installer, Konfiguration, systemd und bisheriger README. Die Erweiterung wird als zusammengehöriges Paket installiert; einzelne Skripte dürfen nicht ohne die gemeinsamen Bibliotheken aktualisiert werden. Stand des Reviews: 10. September 2026. Untersucht wurde der Gitea-Stand `099688e` einschließlich Backup, Restore, Installer, Konfiguration, systemd und bisheriger README. Die Erweiterung wird als zusammengehöriges Paket installiert; einzelne Skripte dürfen nicht ohne die gemeinsamen Bibliotheken aktualisiert werden.
## Ergebnis der Codeanalyse ## Ergebnis der Codeanalyse
@@ -297,6 +303,15 @@ werden nicht verändert. Die Laufzeitergänzung muss nach `daemon-reload` als le
Drop-in gemeldet werden; andernfalls bricht der Lauf ab, damit spätere Drop-in gemeldet werden; andernfalls bricht der Lauf ab, damit spätere
Condition-Resets die Sperre nicht unbemerkt überschreiben. Condition-Resets die Sperre nicht unbemerkt überschreiben.
Zusätzlich schützt `systemctl stop UNIT --job-mode=replace-irreversibly` den
laufenden Stop-Auftrag vor konkurrierenden Reloads und Starts. Die Startbedingung
allein verhindert dessen Verdrängung nicht; dieser Konflikt trat am 15.09.2026
zwischen Apache und dem ai-rem-Healthcheck auf. Der Jobmodus gilt für den
laufenden Auftrag und lässt den späteren Wiederanlauf nach Freigabe der
Startsperren zu. Echte Stopfehler und explizite Job-Abbrüche führen weiterhin zum
Backupfehler mit Wiederanlaufbehandlung. Verlauf und Regressionstest sind in der
[Update-Anleitung](UPDATE_ANLEITUNG.md#nachtrag-vom-15092026-healthcheck-verdrängt-apache-stop) dokumentiert.
Nach dem Anhalten aller Writer, vor und nach den Dumps/Dateikopien und unmittelbar Nach dem Anhalten aller Writer, vor und nach den Dumps/Dateikopien und unmittelbar
vor der Freigabe prüft das Backup Dienstzustand, eigene Sperrdateien und die vor der Freigabe prüft das Backup Dienstzustand, eigene Sperrdateien und die
systemd-Zeitpunkte `ActiveEnterTimestampMonotonic` und `InactiveExitTimestampMonotonic`. systemd-Zeitpunkte `ActiveEnterTimestampMonotonic` und `InactiveExitTimestampMonotonic`.
@@ -611,6 +626,15 @@ separate Abnahmen. Aktivierung und Prüfung auf Gemini erfolgen nach Installatio
### Entwicklungstests ### Entwicklungstests
Aktuelle Verifikation vom 15.09.2026 für den Code-Stand `3730ab4676a5`:
119 Fälle im Standardlauf, davon 111 erfolgreich und acht planmäßig übersprungen
(906,3 Sekunden). Die drei Benutzer-systemd-Fälle bestanden separat: alter
Reload-Konflikt reproduziert, geschützter Stop gegen Reload und Start erfolgreich,
Dienst anschließend inaktiv. Fünf optionale Docker-Integrationstests wurden in
diesem abschließenden Lauf nicht erneut ausgeführt. ShellCheck und
Shell-Syntaxprüfung bestanden. Die folgenden älteren Prüfnachweise bleiben
historische Nachweise; die neue Serverabnahme steht aus.
Reproduzierbar mit `tests/Dockerfile` und `tests/run.sh`. Der Container bekommt das Repository nur lesbar und benötigt während der Tests kein Netzwerk. Die MariaDB läuft ohne TCP-Port in einem temporären Verzeichnis. systemd/occ werden simuliert; alle eigentlichen Archive, Dateikopien, Dumps/Imports und Crypt-Operationen sind real. Reproduzierbar mit `tests/Dockerfile` und `tests/run.sh`. Der Container bekommt das Repository nur lesbar und benötigt während der Tests kein Netzwerk. Die MariaDB läuft ohne TCP-Port in einem temporären Verzeichnis. systemd/occ werden simuliert; alle eigentlichen Archive, Dateikopien, Dumps/Imports und Crypt-Operationen sind real.
Verifikation am 12.09.2026: **Standardlauf erfolgreich** (81 Fälle, davon 80 erfolgreich und ein separater Docker-Test planmäßig übersprungen; 704,8 Sekunden). Zusätzlich bestanden alle **19 gezielten Restore-Tests** mit echten DB-Containern und der Paketupdate-/Rollback-Test mit aktiviertem Restore-Timer. Die gezielten Tests prüfen insbesondere Platzgrenzen, ungültiges SQL, SIGTERM, SIGKILL, defekte Statusdateien, einen unerreichbaren Docker-Daemon und anschließende vollständige Bereinigung. Shell-Syntax, ShellCheck und systemd-Unit-Prüfung ohne Befund. Basis-Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV und ShellCheck 0.10.0. Test-Mails werden nur lokal erfasst. Die tatsächliche Rocky-/OneDrive-/MTA-Abnahme des neuen Monatslaufs auf Gemini steht nach Installation noch aus. Verifikation am 12.09.2026: **Standardlauf erfolgreich** (81 Fälle, davon 80 erfolgreich und ein separater Docker-Test planmäßig übersprungen; 704,8 Sekunden). Zusätzlich bestanden alle **19 gezielten Restore-Tests** mit echten DB-Containern und der Paketupdate-/Rollback-Test mit aktiviertem Restore-Timer. Die gezielten Tests prüfen insbesondere Platzgrenzen, ungültiges SQL, SIGTERM, SIGKILL, defekte Statusdateien, einen unerreichbaren Docker-Daemon und anschließende vollständige Bereinigung. Shell-Syntax, ShellCheck und systemd-Unit-Prüfung ohne Befund. Basis-Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV und ShellCheck 0.10.0. Test-Mails werden nur lokal erfasst. Die tatsächliche Rocky-/OneDrive-/MTA-Abnahme des neuen Monatslaufs auf Gemini steht nach Installation noch aus.
+8
View File
@@ -23,6 +23,14 @@ Ohne Aktivierungsoption bleibt ein bisher deaktivierter Restore-Test deaktiviert
## Produktionsstand und verbleibende Abnahme ## Produktionsstand und verbleibende Abnahme
**Stand 15.09.2026:** Das geprüfte Code-Paket `3730ab4676a5` mit der Korrektur
für den durch einen Healthcheck verdrängten Apache-Stop ist bereitgestellt;
der Commit ist auf `origin/master` veröffentlicht. Übertragung und Installation
auf Gemini sowie ein erfolgreiches Ergebnis der neuen Abnahme sind noch nicht
bestätigt. Im zuletzt dokumentierten Fehlversuch wurden die Dienste wieder
gestartet; Backup- und Restore-Test-Timer blieben gestoppt. Die konkreten Befehle
stehen unter [Deployment des bereitgestellten Pakets](UPDATE_ANLEITUNG.md#deployment-des-bereitgestellten-pakets-3730ab4676a5).
Auf Gemini bestand am 10.09.2026 ein vollständiger Paketlauf mit geschützter Auf Gemini bestand am 10.09.2026 ein vollständiger Paketlauf mit geschützter
Dateikopie, DB-Dumps, OneDrive-Upload, vollständigem Rücklesen und separater Dateikopie, DB-Dumps, OneDrive-Upload, vollständigem Rücklesen und separater
Archivprüfung (14 Archive). Dienste und Backup-Timer wurden anschließend gestartet. Archivprüfung (14 Archive). Dienste und Backup-Timer wurden anschließend gestartet.
+8
View File
@@ -297,6 +297,14 @@ Technische Referenzen: [Docker run](https://docs.docker.com/reference/cli/docker
## Entwicklung und lokale Verifikation ## Entwicklung und lokale Verifikation
Beim abschließenden Prüflauf der Writer-Stop-Korrektur (`3730ab4676a5`) am
15.09.2026 bestanden 111 Tests der Gesamtsuite. Von 119 erkannten Fällen wurden
fünf optionale Docker-Integrationstests und drei Benutzer-systemd-Fälle
übersprungen; die drei systemd-Fälle bestanden separat. Die fünf Docker-Fälle
wurden bei diesem Lauf nicht erneut ausgeführt. Der folgende Nachweis mit echten
DB-Containern stammt aus der vorherigen Prüfung der Restore-Download-Korrektur.
Die erneute Serverabnahme auf Gemini ist weiterhin offen.
Der Folgefix vom 15.09.2026 bestand alle **33 Restore-Test-Fälle** mit der von Der Folgefix vom 15.09.2026 bestand alle **33 Restore-Test-Fälle** mit der von
Gemini kopierten rclone-1.74.3-Binärdatei und dem echten lokalen Gemini kopierten rclone-1.74.3-Binärdatei und dem echten lokalen
`mariadb:10.11`-Image. Geprüft wurden auch Teil-Downloads/Metadaten mit erneutem `mariadb:10.11`-Image. Geprüft wurden auch Teil-Downloads/Metadaten mit erneutem
+58
View File
@@ -1,5 +1,56 @@
# Automatisches Update-Paket # Automatisches Update-Paket
## Deployment des bereitgestellten Pakets 3730ab4676a5
Stand 15.09.2026: Der Code-Commit `3730ab4676a5` ist auf `origin/master`
veröffentlicht. Das daraus gebaute Paket und seine SHA-256-Datei liegen lokal
unter `dist/`; äußere Prüfsumme, interne Payload-Prüfsumme und alle 33 enthaltenen
Dateien wurden geprüft. Die nachfolgende Dokumentationsaktualisierung ändert den
Programmstand nicht. Das Paket bleibt für die bereits übermittelte Installation
gültig. Übertragung, Installation und neue Serverabnahme sind noch nicht bestätigt.
Auf dem Arbeitsplatz:
```bash
cd /home/johannes/localdev/app-backup/dist
scp app-backup-update-3730ab4676a5.run \
app-backup-update-3730ab4676a5.run.sha256 \
johannes@gemini.jr-it-services.de:~/
```
Auf Gemini im Wartungsfenster starten; während der Datenkopie werden die
konfigurierten Anwendungen angehalten:
```bash
ssh johannes@gemini.jr-it-services.de
cd ~
sha256sum -c app-backup-update-3730ab4676a5.run.sha256 &&
sudo bash app-backup-update-3730ab4676a5.run
```
Der bereits aktivierte Restore-Test wird übernommen; ein vorheriger Rollback
ist nicht erforderlich. Der Auftrag läuft unabhängig von der SSH-Verbindung.
```bash
sudo journalctl -fu app-backup-upgrade.service --no-pager
```
`Strg+C` beendet nur die Loganzeige. Den vom Starter genannten Ergebnisordner
verwenden und `XXXXXXXX` durch dessen tatsächlichen Suffix ersetzen:
```bash
sudo cat /var/backups/app-backup-upgrade-XXXXXXXX/result.txt
sudo systemctl list-timers app-backup.timer app-restore-test.timer --no-pager
```
Erst `SUCCESS` in dieser neuen Ergebnisdatei bestätigt Installation, Backup und
Remote-Restore-Prüfung. Bei `QUEUED` oder `RUNNING` keinen zweiten Lauf starten.
Bei `FAILED` die Ergebnisdatei und die letzten Journalzeilen auswerten:
```bash
sudo journalctl -u app-backup-upgrade.service -n 150 --no-pager -l
```
## Nachtrag vom 15.09.2026: Healthcheck verdrängt Apache-Stop ## Nachtrag vom 15.09.2026: Healthcheck verdrängt Apache-Stop
Im Update mit Paket `3d16f33f24c0` wurde die alte Sicherung vom 12.09. um Im Update mit Paket `3d16f33f24c0` wurde die alte Sicherung vom 12.09. um
@@ -588,6 +639,13 @@ Das ausführbare Paket ausschließlich über euren vertrauenswürdigen Kanal bez
## Verifikation der Lieferung ## Verifikation der Lieferung
Aktueller Stand vom 15.09.2026 für das Code-Paket `3730ab4676a5`: 119 Fälle im
Standardlauf, 111 erfolgreich und acht planmäßig übersprungen; die drei echten
Benutzer-systemd-Fälle bestanden separat. Fünf optionale Docker-Integrationstests
wurden bei diesem abschließenden Lauf nicht erneut ausgeführt. ShellCheck und
Shell-Syntaxprüfung bestanden. Details stehen im
[Nachtrag zur Stop-Korrektur](#nachtrag-vom-15092026-healthcheck-verdrängt-apache-stop).
Verifikation am 12.09.2026: Standardlauf mit 81 Fällen erfolgreich (80 bestanden, ein separater Docker-Test planmäßig übersprungen; 704,8 Sekunden). Zusätzlich bestanden alle 19 gezielten Restore-Tests mit echten DB-Containern und der Installer-/Rollback-Test mit aktiviertem Restore-Timer. Geprüft sind vollständiges Entpacken, isolierter SQL-Import, fehlerhafte Dumps, Platzgrenzen und Bereinigung nach normalen und harten Abbrüchen. ShellCheck, Shell-Syntax und systemd-Unit-Prüfung erfolgreich. Echte E-Mails werden in Entwicklungstests nicht versendet; die Serverabnahme des Monatslaufs erfolgt nach Installation. Verifikation am 12.09.2026: Standardlauf mit 81 Fällen erfolgreich (80 bestanden, ein separater Docker-Test planmäßig übersprungen; 704,8 Sekunden). Zusätzlich bestanden alle 19 gezielten Restore-Tests mit echten DB-Containern und der Installer-/Rollback-Test mit aktiviertem Restore-Timer. Geprüft sind vollständiges Entpacken, isolierter SQL-Import, fehlerhafte Dumps, Platzgrenzen und Bereinigung nach normalen und harten Abbrüchen. ShellCheck, Shell-Syntax und systemd-Unit-Prüfung erfolgreich. Echte E-Mails werden in Entwicklungstests nicht versendet; die Serverabnahme des Monatslaufs erfolgt nach Installation.
Die Tests enthalten echte MariaDB-Dumps/Imports und lokale rclone-Crypt-Roundtrips; Die Tests enthalten echte MariaDB-Dumps/Imports und lokale rclone-Crypt-Roundtrips;