Retry Policies
Configure automatic retries for test steps with configurable backoff strategies.
Quick Start
- name: "API request with retry"
plugin: http
config:
method: GET
url: "{{ .vars.api_url }}/users"
retry:
maximum_attempts: 3
initial_interval: "1s"
backoff_coefficient: 2.0
Configuration
| Option | Description | Example |
|---|---|---|
maximum_attempts |
Maximum retry attempts | 3 |
initial_interval |
Initial retry delay | "1s", "500ms" |
maximum_interval |
Maximum retry delay | "30s" |
backoff_coefficient |
Exponential backoff multiplier | 2.0 |
non_retryable_errors |
Error types to never retry | ["ValidationError"] |
Backoff Strategies
Exponential Backoff
retry:
maximum_attempts: 4
initial_interval: "1s"
backoff_coefficient: 2.0
# Retry delays: 1s → 2s → 4s → 8s
Linear Backoff
retry:
maximum_attempts: 3
initial_interval: "5s"
backoff_coefficient: 1.0
# Retry delays: 5s → 5s → 5s
Capped Exponential
retry:
maximum_attempts: 5
initial_interval: "1s"
maximum_interval: "10s"
backoff_coefficient: 2.0
# Retry delays: 1s → 2s → 4s → 8s → 10s (capped)
Common Patterns
# Flaky HTTP endpoints
- name: "Call API"
plugin: http
config:
method: GET
url: "{{ .vars.api_url }}/status"
retry:
maximum_attempts: 5
initial_interval: "1s"
backoff_coefficient: 2.0
# Database queries
- name: "Query database"
plugin: sql
config:
driver: postgres
dsn: "{{ .env.DATABASE_URL }}"
commands:
- "SELECT COUNT(*) FROM users;"
retry:
maximum_attempts: 3
initial_interval: "2s"
# Skip specific errors
- name: "Create user"
plugin: http
config:
method: POST
url: "{{ .vars.api_url }}/users"
retry:
maximum_attempts: 3
non_retryable_errors:
- "ValidationError"
- "AuthenticationError"
Best Practices
- Use retries for: Network timeouts, transient failures, flaky APIs, eventual consistency
- Don't retry: Validation errors, authentication failures, permanent errors (404, 401)
- Start conservative: Begin with 3 attempts, adjust based on flakiness
- Use exponential backoff: Better for rate-limited APIs
- Set maximum_interval: Prevent excessively long delays
See Also
- Delay Plugin - Fixed delays between steps
- HTTP Plugin - HTTP request retries