From c58735f5d3689b648d48f697c1a3747db67f152c Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Thu, 5 Mar 2026 15:12:24 +0530 Subject: [PATCH] chore: fix the case when circuit breaker config is not set --- api/routes/campaign.py | 10 +++++----- api/routes/organization.py | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/api/routes/campaign.py b/api/routes/campaign.py index 6a3b58c..b2a395b 100644 --- a/api/routes/campaign.py +++ b/api/routes/campaign.py @@ -137,10 +137,10 @@ class CircuitBreakerConfigRequest(BaseModel): class CircuitBreakerConfigResponse(BaseModel): - enabled: bool - failure_threshold: float - window_seconds: int - min_calls_in_window: int + enabled: bool = False + failure_threshold: float = 0.5 + window_seconds: int = 120 + min_calls_in_window: int = 5 class CreateCampaignRequest(BaseModel): @@ -232,7 +232,7 @@ def _build_campaign_response(campaign, workflow_name: str) -> CampaignResponse: # Get max_concurrency, schedule_config, circuit_breaker from orchestrator_metadata max_concurrency = None schedule_config = None - circuit_breaker_config = None + circuit_breaker_config = CircuitBreakerConfigResponse() if campaign.orchestrator_metadata: max_concurrency = campaign.orchestrator_metadata.get("max_concurrency") sc = campaign.orchestrator_metadata.get("schedule_config") diff --git a/api/routes/organization.py b/api/routes/organization.py index c2085ab..f96d7c1 100644 --- a/api/routes/organization.py +++ b/api/routes/organization.py @@ -270,10 +270,10 @@ class ScheduleConfigResponse(BaseModel): class CircuitBreakerConfigResponse(BaseModel): - enabled: bool - failure_threshold: float - window_seconds: int - min_calls_in_window: int + enabled: bool = False + failure_threshold: float = 0.5 + window_seconds: int = 120 + min_calls_in_window: int = 5 class LastCampaignSettingsResponse(BaseModel): @@ -339,7 +339,7 @@ async def get_campaign_defaults(user: UserModel = Depends(get_user)): max_conc = None sched = None - cb = None + cb = CircuitBreakerConfigResponse() if last_campaign.orchestrator_metadata: max_conc = last_campaign.orchestrator_metadata.get("max_concurrency") sc = last_campaign.orchestrator_metadata.get("schedule_config") @@ -354,6 +354,8 @@ async def get_campaign_defaults(user: UserModel = Depends(get_user)): cb_data = last_campaign.orchestrator_metadata.get("circuit_breaker") if cb_data: cb = CircuitBreakerConfigResponse(**cb_data) + else: + cb = CircuitBreakerConfigResponse() last_campaign_settings = LastCampaignSettingsResponse( retry_config=retry,