Empty reply on timeout without any log entry
- Dominant language
- Go
- Stars
- 1.2k
- Forks
- 58
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 6
Description
I am testing requests that run over 30s with DEBUG=1:
```
env | grep DEBUG
DEBUG=1
```
```
~# time curl -i http://localhost:4000/sleep?seconds=35
curl: (52) Empty reply from server
real 0m35.034s
user 0m0.010s
sys 0m0.009s
```
The only log entries are:
```
Started GET "/sleep?seconds=35" for 127.0.0.1 at 2025-12-11 15:58:53 +0200[user: guest] Processing by HomeController#sleep as */*[user: guest] Parameters: {"seconds"=>"35"}[user: guest] Rendered text template (0.0ms)[user: guest] Completed 200 OK in 35008ms (Views: 0.6ms | ActiveRecord: 0.0ms){"time":"2025-12-11T15:59:28.307289503+02:00","level":"INFO","msg":"Request","path":"/sleep","status":200,"dur":35018,"method":"GET","req_content_length":0,"req_content_type":"","resp_content_length":8,"resp_content_type":"text/plain; charset=utf-8","remote_addr":"10.88.0.1:42120","user_agent":"curl/8.14.1","cache":"miss","query":"seconds=35","proto":"HTTP/1.1"}
```
Expected behaviour:
1. There is a log entry about the failure
2. The server replies with a 504 Gateway Timeout
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/504
Version used: 0.1.16
Contributor guide
Research direction
Reproduce the issue with DEBUG=1 using curl against /sleep?seconds=35 and inspect the HTTP timeout handling entry point; no source files or tests are named in the report. Done means the failure is logged and the client receives a 504 Gateway Timeout instead of an empty reply.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend, networking
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100