Document released stop fix and pending Gemini acceptance
This commit is contained in:
1 parent
3730ab4676
commit
04283a607c
4 files changed
+98
No files matched your search
@@ -1,5 +1,11 @@
|
||||
# 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.
|
||||
|
||||
## 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
|
||||
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
|
||||
vor der Freigabe prüft das Backup Dienstzustand, eigene Sperrdateien und die
|
||||
systemd-Zeitpunkte `ActiveEnterTimestampMonotonic` und `InactiveExitTimestampMonotonic`.
|
||||
@@ -611,6 +626,15 @@ separate Abnahmen. Aktivierung und Prüfung auf Gemini erfolgen nach Installatio
|
||||
|
||||
### 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.
|
||||
|
||||
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.
|
||||
|
||||
@@ -23,6 +23,14 @@ Ohne Aktivierungsoption bleibt ein bisher deaktivierter Restore-Test deaktiviert
|
||||
|
||||
## 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
|
||||
Dateikopie, DB-Dumps, OneDrive-Upload, vollständigem Rücklesen und separater
|
||||
Archivprüfung (14 Archive). Dienste und Backup-Timer wurden anschließend gestartet.
|
||||
|
||||
@@ -297,6 +297,14 @@ Technische Referenzen: [Docker run](https://docs.docker.com/reference/cli/docker
|
||||
|
||||
## 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
|
||||
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
|
||||
|
||||
@@ -1,5 +1,56 @@
|
||||
# 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
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
|
||||
Die Tests enthalten echte MariaDB-Dumps/Imports und lokale rclone-Crypt-Roundtrips;
|
||||
|
||||
Reference in new issue
Block a user