feat: add retry loop for tool registration at startup
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m18s
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 6m18s
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user