Idle timeout expired
- Dominant language
- Java
- Stars
- 1.4k
- Forks
- 712
- Avg merge
- 15h 41m
- Merged PRs (30d)
- 53
Description
### Version
5.2.0
### Question
We very occasionally run into errors like these during large and long-running backups and restores (~50min.):
Backup:
```
[74449] Runtime IO Exception (client left?) RC = 500 : java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30000/30000 ms
```
Restore:
```
[line: 79482794, col: 22] Bad input stream [java.io.IOException: java.util.concurrent.TimeoutException: Idle timeout expired: 30000/30000 ms]
```
Unfortunately the logs above are the only ones we have on this problem right now, as it happens very sporadically.
For backups e.g. we use curl like so:
```
curl --fail --silent --show-error -X GET -H "Accept: application/trig" -u "user:password" "http://db:3030/repo" > "backup.trig"
```
Curiously, despite the above error, `curl` exited successfully with status code `0`, which makes it seem like the connection was actually closed gracefully instead of unexpectedly disconnected. The backup was of course incomplete/cut off.
What is the meaning of this "Idle timeout expired" exception?
Is the timeout configurable somewhere?
Thanks!
Contributor guide
Research direction
The payload names no source file or test; begin with the Java HTTP/server timeout handling associated with the logged 30-second idle timeout and compare the backup and restore paths. Reproduce or trace a long-running transfer using the shown curl command, identify whether the timeout is configurable, and document behavior that prevents incomplete transfers from appearing successful.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100