diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java index 9947c62..536a390 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ExecuteService.java @@ -166,9 +166,17 @@ public class ExecuteService { private Object executeWithResilience(McpRequestContext context, ToolMetadata metadata, ObjectNode arguments, Map payload) { RetryPolicy retryPolicy = retryPolicy(metadata, arguments); + + int failureThreshold = (metadata.getCircuitBreakerFailureThreshold() != null && metadata.getCircuitBreakerFailureThreshold() > 0) + ? metadata.getCircuitBreakerFailureThreshold() + : properties.circuitBreakerFailureThreshold(); + + long openMillis = (metadata.getCircuitBreakerOpenMillis() != null && metadata.getCircuitBreakerOpenMillis() > 0) + ? metadata.getCircuitBreakerOpenMillis() + : properties.circuitBreakerOpenMillis(); + CircuitBreaker circuitBreaker = circuitBreakerService.breaker("tool:" + metadata.getName(), - metadata.getCircuitBreakerFailureThreshold(), - metadata.getCircuitBreakerOpenMillis()); + failureThreshold, openMillis); ToolExecutionException lastError = null; for (int attempt = 1; attempt <= retryPolicy.maxAttempts(); attempt++) {