Skip to content

Commit 5deba97

Browse files
committed
Add minimum limits for retry configurations
1 parent 71d159e commit 5deba97

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

posit-bakery/posit_bakery/retry.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,26 +53,34 @@
5353
)
5454

5555

56-
def _env_int(name: str, default: int) -> int:
56+
def _env_int(name: str, default: int, min_value: int = 0) -> int:
5757
raw = os.environ.get(name)
5858
if raw is None or raw.strip() == "":
5959
return default
6060
try:
61-
return int(raw)
61+
value = int(raw)
6262
except ValueError:
6363
log.warning(f"Ignoring invalid {name}={raw!r}; using default {default}.")
6464
return default
65+
if value < min_value:
66+
log.warning(f"Ignoring {name}={raw!r}; using default {default}.")
67+
return default
68+
return value
6569

6670

67-
def _env_float(name: str, default: float) -> float:
71+
def _env_float(name: str, default: float, min_value: float = 0.0) -> float:
6872
raw = os.environ.get(name)
6973
if raw is None or raw.strip() == "":
7074
return default
7175
try:
72-
return float(raw)
76+
value = float(raw)
7377
except ValueError:
7478
log.warning(f"Ignoring invalid {name}={raw!r}; using default {default}.")
7579
return default
80+
if value < min_value:
81+
log.warning(f"Ignoring {name}={raw!r}; using default {default}.")
82+
return default
83+
return value
7684

7785

7886
class RetryPolicy(BaseModel):
@@ -87,15 +95,15 @@ class RetryPolicy(BaseModel):
8795
- ``BAKERY_REGISTRY_RETRY_MULTIPLIER`` (default 2.0)
8896
"""
8997

90-
max_attempts: Annotated[int, Field(default_factory=lambda: _env_int("BAKERY_REGISTRY_RETRY_ATTEMPTS", 5), ge=1)]
98+
max_attempts: Annotated[int, Field(default_factory=lambda: _env_int("BAKERY_REGISTRY_RETRY_ATTEMPTS", 5, 1), ge=1)]
9199
initial_backoff: Annotated[
92-
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_INITIAL_BACKOFF", 2.0), ge=0)
100+
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_INITIAL_BACKOFF", 2.0, 0), ge=0)
93101
]
94102
max_backoff: Annotated[
95-
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_MAX_BACKOFF", 32.0), ge=0)
103+
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_MAX_BACKOFF", 32.0, 0), ge=0)
96104
]
97105
multiplier: Annotated[
98-
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_MULTIPLIER", 2.0), ge=1)
106+
float, Field(default_factory=lambda: _env_float("BAKERY_REGISTRY_RETRY_MULTIPLIER", 2.0, 1), ge=1)
99107
]
100108

101109

0 commit comments

Comments
 (0)