posit-dev / posit-dev/ptd

Add explicit Traefik timeout configuration to align with ALB idle timeout

Open
#188 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
7
Forks
2
Avg merge
1d 15h
Merged PRs (30d)
3

Description

Summary

Traefik deployments on AWS workload clusters lack explicit timeout configuration, which can cause latency spikes due to a mismatch with the ALB idle timeout setting.

Current Behavior

  • ALB idle timeout is set to 300 seconds (aws_workload_helm.py:897)
  • Traefik uses default timeout values (no explicit configuration in helm values)
  • Traefik's default forwardingTimeouts.idleConnTimeout is 90 seconds

This mismatch means the ALB may hold connections open longer than Traefik's backend connection pool, causing connection re-establishment latency when requests arrive on connections the ALB considers active but Traefik has already closed.

Proposed Solution

Add explicit timeout configuration to the Traefik helm values in _define_traefik() (around line 714 in aws_workload_helm.py):

"additionalArguments": [
    "--entryPoints.web.transport.respondingTimeouts.idleTimeout=310",
    "--serversTransport.forwardingTimeouts.idleConnTimeout=310s",
],

Setting these slightly higher than the ALB's 300s timeout ensures Traefik keeps connections alive at least as long as the ALB expects.

Files Affected

  • python-pulumi/src/ptd/pulumi_resources/aws_workload_helm.py

Additional Context

The NLB-based control room Traefik configuration (traefik.py) may also benefit from similar explicit timeout settings for consistency.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in python-pulumi/src/ptd/pulumi_resources/aws_workload_helm.py at _define_traefik() around line 714, and compare its Helm values with the ALB idle timeout at line 897. Add the explicit Traefik timeout arguments described in the issue, then verify the resulting configuration keeps both timeout values above the 300-second ALB setting.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cloud, infrastructure
Issue type
Feature
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.