feat: add retry loop for tool registration at startup
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m18s

This commit is contained in:
jade
2026-08-14 00:10:30 +09:00
parent dfaeae7e01
commit 8a7697447f

View File

@@ -234,9 +234,11 @@ public class ToolRegistryHeartbeatSender {
public void registerAllTools() { public void registerAllTools() {
if (registeredTools.isEmpty()) return; if (registeredTools.isEmpty()) return;
for (ToolMetadata tool : registeredTools) { new Thread(() -> {
registerTool(tool); for (ToolMetadata tool : registeredTools) {
} registerTool(tool);
}
}, "McpToolRegistrationThread").start();
} }
@PreDestroy @PreDestroy
@@ -259,17 +261,31 @@ public class ToolRegistryHeartbeatSender {
} }
private void registerTool(ToolMetadata tool) { private void registerTool(ToolMetadata tool) {
try { int maxRetries = 12;
restClient.post() int delayMs = 10000;
.uri(gatewayUrl + "/mcp/api/v1/registry/register") for (int i = 0; i < maxRetries; i++) {
.header("Content-Type", "application/json") try {
restClient.post()
.body(tool) .uri(gatewayUrl + "/mcp/api/v1/registry/register")
.retrieve() .header("Content-Type", "application/json")
.toBodilessEntity(); .body(tool)
log.info(" [HeartbeatSender] 툴 재등록 성공: {}", tool.getUid()); .retrieve()
} catch (Exception ex) { .toBodilessEntity();
log.error(" [HeartbeatSender] 툴 등록 실패: {}", ex.getMessage()); log.info(" [HeartbeatSender] 툴 등록 성공: {}", tool.getUid());
return;
} catch (Exception ex) {
if (i == maxRetries - 1) {
log.error(" [HeartbeatSender] 툴 등록 최종 실패 ({}회 재시도): {}", maxRetries, ex.getMessage());
} else {
log.warn(" [HeartbeatSender] 툴 등록 실패, {}초 후 재시도... ({}/{}): {}", delayMs/1000, i+1, maxRetries, ex.getMessage());
try {
Thread.sleep(delayMs);
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
break;
}
}
}
} }
} }
} }