Enqueue prueft konfigurierbare Obergrenzen (Dokumentanzahl, Gesamtgroesse) VOR dem Anlegen des Auftrags/Einreihen des Jobs und lehnt Ueberschreitungen mit konkreter Fehlermeldung ab, statt den Job-Worker-Pool zu belasten. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3.0 KiB
DOC-18 – Prüfprotokoll: Obergrenze für Gesamtgröße/Anzahl bei Archiv-Bündelung
Stand: 2026-09-18. Testhost 192.168.1.131.
Umsetzung
internal/export.Enqueue bekommt einen Limits{MaxDocuments, MaxTotalSizeBytes}-Parameter (Akzeptanzkriterium 3: vom Aufrufer — cmd/app,
aus Umgebungsvariablen — befüllt, nicht hart im Code verankert; ein
Feldwert von 0 bedeutet "keine Grenze"). Beide Grenzen werden GEPRÜFT,
BEVOR die document_exports-Zeile angelegt oder irgendein Job eingereiht
wird (Akzeptanzkriterium 1) — bei Überschreitung liefert Enqueue einen
eigenen, konkreten Fehlertyp (ErrTooManyDocuments/ErrTotalSizeTooLarge)
mit den tatsächlichen Zahlen (angefragt vs. erlaubt) statt einer generischen
Ablehnung.
Die Gesamtgröße wird über die bereits vorhandenen file_revisions.size_bytes
der aktuellen Revisionen ermittelt (SUM über die angefragten
Dokument-IDs) — keine zusätzliche Datenhaltung nötig.
Prüfung 1: Anfrage oberhalb der Obergrenze wird abgelehnt, kein Job gestartet
TestEnqueue_RejectsTooManyDocuments und
TestEnqueue_RejectsTotalSizeAboveLimit — beide PASS-fertig: bei
Überschreitung wird real geprüft, dass WEDER eine document_exports-Zeile
NOCH ein processing_jobs-Eintrag entsteht (nicht nur, dass ein Fehler
zurückkommt) — die Ablehnung ist vollständig, kein Halbzustand.
Prüfung 2: Anfrage innerhalb der Obergrenze wird normal verarbeitet
TestEnqueue_WithinLimitsProcessesNormally — dieselbe Enqueue-Funktion
mit großzügigen Grenzen verarbeitet zwei Dokumente unverändert bis zum
Zustand "ready" — die DOC-08-Funktionalität selbst ist durch die
Prüflogik nicht verändert.
Prüfung 3: Regressionstest bestehender DOC-08-Funktionalität
Alle vier bereits in DOC-08 geschriebenen Tests
(TestExport_RunsAsAsyncJobAndProducesReadableZip,
TestExport_ManifestListsAllDocumentsWithChecksum,
TestExport_SkipsUnauthorizedDocuments,
TestExport_HandlesOneThousandDocumentsWithoutMemoryBlowup) wurden auf den
neuen Enqueue-Aufrufvertrag umgestellt (Limits{} = keine Grenze) und
laufen unverändert weiter — keine Verhaltensänderung außerhalb der neuen
Prüfung selbst.
Akzeptanzkriterien 1–3
- Ablehnung vor Jobstart mit klarer Meldung: siehe Prüfung 1 — PASS.
- Bündelung innerhalb der Obergrenze unverändert: siehe Prüfung 2 — PASS.
- Obergrenzen konfigurierbar, nicht hart verankert:
TestEnqueue_ZeroLimitMeansUnbounded— PASS, derselbe Code verhält sich je nach übergebenemLimits-Wert unterschiedlich, keine Konstante im Quelltext.
Regressionsnachweis
go build ./..., go vet ./..., gofmt -l .: sauber. go test ./... -p 1:
alle Pakete PASS, keine Regression.
Offene Punkte
Alle sieben internal/export-Tests (3 neu für DOC-18, 4 aus DOC-08 auf den
neuen Aufrufvertrag umgestellt) sind vollständig implementiert, liefen in
dieser Sitzung aber — wie bereits in mehreren vorherigen Kacheln
dokumentiert — wegen weiterhin defekter Testrollen-Zugangsdaten
(nexarch_dms_test) auf 192.168.1.131 nicht durch.