fix(storage): preserve explicit S3 MIME types in SeaweedFS

This commit is contained in:
2026-09-28 14:34:30 +02:00
parent a3f4a7c004
commit 790f20b499
8 changed files with 142 additions and 8 deletions

View File

@@ -13,7 +13,8 @@ Die fachliche Abnahme erfolgt zusätzlich auf der konkreten Instanz.
## Was der Pilot leistet und wo seine Grenze liegt
- Vorhandenes MinIO verwenden; kein Abruf von `minio/minio` oder `mc` erforderlich.
- Feste SeaweedFS-Version 4.47; Offline-Images, SHA-256-geprüftes Paket.
- SeaweedFS 4.47 mit dokumentierter FEDEO-Metadatenkorrektur; Offline-Images,
SHA-256-geprüftes Paket.
- Alle Objekte des einzigen FEDEO-Buckets übernehmen, inklusive Exporte und
Objekte ohne aktuellen Datenbankverweis. Schlüssel und Metadaten bleiben erhalten.
- Alle bekannten Schreiber anhalten, ihre automatischen Neustarts sperren,
@@ -40,6 +41,27 @@ auf SeaweedFS und der Standardinstaller sind nachfolgende Arbeitspakete.
Wer diese Einschränkungen noch nicht im Betrieb tragen möchte, führt zunächst
nur die Vorprüfung durch und bleibt mit der Instanz auf MinIO.
### Warum das Pilotimage eine gezielte Korrektur enthält
Das unveränderte SeaweedFS 4.47 entfernt beim Speichern den expliziten MIME-Typ
`application/octet-stream`. Bei einem `.pdf`-Schlüssel liefern HEAD und GET
dadurch später `application/pdf`. Diese Abweichung wurde beim ersten betreuten
Versuch durch den strengen Metadatenvergleich erkannt; die Instanz wurde vor
Schreibfreigabe erfolgreich auf MinIO zurückgeführt.
`scripts/storage/Dockerfile.seaweedfs` baut deshalb die feste Herstellerrevision
`c5073360007d28385a33426a42ac3e4ec504c5a3` mit
`preserve-s3-content-type.patch` als `4.47-fedeo.1`. Die Korrektur bewahrt den
expliziten Typ für S3-Einträge; die Normalisierung gewöhnlicher Dateisystemeinträge
bleibt erhalten. Quellarchiv, Go-Buildimage und Hersteller-Basisimage sind per
SHA-256 festgelegt. Gezielte Go-Tests laufen beim Build; das Paket enthält den
Buildplan und Patch mit Prüfsummen. Der S3-Vertrag prüft den generischen MIME-Typ
zusätzlich mit HEAD, GET und dem Original-Backend-SDK.
Dies ist eine eigene Buildvariante. Bei einem späteren SeaweedFS-Update muss die
Korrektur weitergeführt oder durch einen nachgewiesenen Herstellerfix ersetzt
werden; das ungeänderte Herstellerimage ist für diese 1:1-Übernahme nicht freigegeben.
## Voraussetzungen, die der Plan prüft
Linux amd64, Python ab 3.10, lokaler Docker-Daemon, Docker Compose und `tar`/`du`.
@@ -211,7 +233,7 @@ nicht automatisch gelöscht.
## Nachgewiesene Tests und ausstehende Freigaben
Der lokale S3-Test verwendet das offizielle MinIO-Release-Binary vom 7. September
2025 und SeaweedFS 4.47 mit festem Digest. 1.005 Objekte / 1.073.752.750 Bytes,
2025 und SeaweedFS 4.47 mit der dokumentierten MIME-Korrektur. 1.005 Objekte / 1.073.752.750 Bytes,
einschließlich 1-GiB-Grenzdatei, Pagination, Sonderzeichen, Metadaten, leeren
Dateien, Streaming, 24-Stunden-Signaturen, fremdem Bucket und ungültigen Zugängen
werden geprüft. Beschädigte Zielobjekte werden erkannt und beim Fortsetzen