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
|
# 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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in new issue
Block a user