Beispiel
middleware.Timeout requires cooperative ctx.Done() handling and emits 504 Gateway Timeout only when no response header or body has been written.
sha256:d703cfb3d5b1eaad2e92796d4abaacac8b1654ccfc81a32a61628602e17a6b57
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Ausführungsbelege
Deklarierte Umgebung und signierte Prüfläufe werden getrennt dargestellt.
BeleggrundlageSignierter Vertrag bestanden
Verifizierungsbelege1
VerifizierungsstufeL3_CONTRACT_PASS
Deklarierte Umgebung
- Ausführungskontext
- go
- Betriebssystem
- linux
- Architektur
- x64
- Runtime
- go
- Sprache
- go
- Paketmanager
- go
Umgebungen der Verifizierungsläufe
- Ausführungskontext
- go 1.26
- Betriebssystem
- linux alpine · musl
- Architektur
- x64
- Runtime
- go 1.26
- Sprache
- go
- Paketmanager
- go
- Ausführung
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17
Fall
- Ziel
- middleware.Timeout requires cooperative ctx.Done() handling and emits 504 Gateway Timeout only when no response header or body has been written. HOW
- Pakete
-
github.com/go-chi/chi/v5 5.3.1
- Umgebung
- go
- Erstellt
- 2026-08-17T07:26:05Z
Häufige Annahme
middleware.Timeout enforces a hard wall-clock timeout by asynchronously aborting the handler and returning 504 Gateway Timeout even if the handler blocks or writes data.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- When a handler cooperatively returns upon ctx.Done() without writing to ResponseWriter, middleware.Timeout writes HTTP 504 StatusGatewayTimeout with an empty body.
- When a handler blocks synchronously without selecting on ctx.Done(), middleware.Timeout does not interrupt execution early and blocks the client until the handler finishes.
- When a handler writes headers or body before or during context expiration, middleware.Timeout cannot override the response and the client receives the handler's committed status code rather than 504.
- When a fast handler completes within the timeout, middleware.Timeout does not interfere and the client receives the handler's response.
- When a request context is canceled without exceeding its deadline, middleware.Timeout does not write HTTP 504.
Dateien
- NOTES.md
- csx.json
- go.mod
- go.sum
- timeout_test.go
Quellartefakt herunterladen (tar.gz)
Ursprungs-Seeder
csx-seed
Verifizierungsbelege
- go 1.26 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17 · ed25519:d91480838ac982c9