Skip to content

feat: configure HTTP timeouts - #56

Open
trchopan wants to merge 6 commits into
mainfrom
feat/configurable-http-timeout
Open

feat: configure HTTP timeouts#56
trchopan wants to merge 6 commits into
mainfrom
feat/configurable-http-timeout

Conversation

@trchopan

Copy link
Copy Markdown
Owner

Summary

  • Add per-HTTP-service upstream_timeout_secs configuration, defaulting to 60 seconds and bounded to 1-300 seconds.
  • Add per-attachment http_timeout_secs configuration and positional --http-timeout-secs support.
  • Enforce host timeouts across the complete forwarding lifecycle with one absolute deadline.
  • Handle attachment response timeouts as 504 Gateway Timeout and invalidate incomplete shared tunnel leases.
  • Add boundary, CLI, TOML, post-header, recovery, release, performance, and soak coverage.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --all-targets --all-features -- -D warnings
  • 68 unit tests passed
  • 19 integration tests passed
  • Release smoke tests passed against release binaries
  • Python load-generator tests passed
  • Docker Compose configuration and performance scripts validated
  • scripts/verify-release.sh --skip-artifacts passed

Performance and soak

  • 15-minute supported-load stress baseline passed with zero failures.
  • HTTP concurrency levels: 1, 10, 50, 100.
  • TCP concurrency levels: 1, 10, 50.
  • 1-hour ARM64 soak passed with 58,680,003 successful operations.
  • Soak recorded zero timeout failures and successful host, HTTP attachment, and TCP attachment recovery probes.
  • Resource samples showed stable task/file-descriptor counts and bounded memory.
  • TCP concurrency 100 was validated separately as an explicit capacity-limit scenario; expected TCP connection limit reached rejections were observed, so it is not part of the standard baseline.

Artifacts from the validation runs are retained locally under artifacts/.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant