RETRY_STRATEGY
Assign a named retry strategy for handling transient database failures.
Keywords
retry_strategy_name, retry_strategy, retry
Syntax
retry_strategy <strategy-name>
retry <strategy-name>Or using custom parameter syntax:
retry_strategy = <strategy-name>
retry = <strategy-name>The strategy-name must match a strategy defined in CommandRetryOptions configuration.
Examples
Use Default Strategy
sql
comment on function critical_operation() is
'HTTP POST
retry_strategy default';Use Named Strategy
sql
comment on function important_query() is
'HTTP GET
retry aggressive';Combined with Timeout
sql
comment on function long_running_task() is
'HTTP POST
timeout 2 minutes
retry_strategy default';Behavior
- References a retry strategy defined in
CommandRetryOptions.Strategiesconfiguration. - Automatically retries on transient failures when PostgreSQL returns error codes defined in the strategy.
- Strategy defines:
- Retry count: Number of elements in
RetrySequenceSecondsarray - Retry delays: Wait time between retries in seconds
- Error codes: PostgreSQL error codes that trigger retries
- Retry count: Number of elements in
Common Retry Scenarios
| Error Type | PostgreSQL Codes | Description |
|---|---|---|
| Serialization | 40001, 40P01 | Transaction conflicts, deadlocks |
| Connection | 08000, 08003, 08006 | Connection issues |
| Resources | 53300 | Too many connections |
| System | 57P03 | Cannot connect now |
Configuration Example
Define strategies in configuration:
json
{
"CommandRetryOptions": {
"Enabled": true,
"DefaultStrategy": "default",
"Strategies": {
"default": {
"RetrySequenceSeconds": [0, 1, 2, 5, 10],
"ErrorCodes": ["40001", "40P01", "08000", "08003", "08006"]
},
"aggressive": {
"RetrySequenceSeconds": [0, 0.5, 1, 2, 5, 10, 30],
"ErrorCodes": ["40001", "40P01", "08000", "08003", "08006", "53300", "57P03"]
},
"minimal": {
"RetrySequenceSeconds": [0, 1],
"ErrorCodes": ["40001", "40P01"]
}
}
}
}Then use in annotations:
sql
-- Use aggressive retry for critical operations
comment on function process_payment() is
'HTTP POST
retry aggressive';
-- Use minimal retry for fast queries
comment on function quick_lookup() is
'HTTP GET
retry minimal';See Command Retry for complete configuration reference.
Related
- Command Retry configuration - Define retry strategies
- Comment Annotations Guide - How annotations work
- Configuration Guide - How configuration works
Related Annotations
- COMMAND_TIMEOUT - Set query timeout
- ERROR_CODE_POLICY - Custom error code handling