fix : fix credential process logic for nacos mcp util and add ut for it (#2394)

This commit is contained in:
EricaLiu
2025-06-10 20:03:45 +08:00
committed by GitHub
parent d2f09fe8c5
commit 1666dfb01c
3 changed files with 319 additions and 6 deletions

View File

@@ -368,10 +368,13 @@ func (n *NacosRegistryClient) replaceTemplateAndExactConfigsItems(ctx *ServerCon
func (n *NacosRegistryClient) resetNacosTemplateConfigs(ctx *ServerContext, config *ConfigListenerWrap) {
newCredentials := n.replaceTemplateAndExactConfigsItems(ctx, config)
credentialsNeedDelete := []string{}
// cancel all old config listener
for key, wrap := range ctx.configsMap {
if strings.HasPrefix(key, CredentialPrefix) {
if _, ok := newCredentials[key]; !ok {
credentialsNeedDelete = append(credentialsNeedDelete, key)
err := n.cancelListenToConfig(wrap)
if err != nil {
mcpServerLog.Errorf("cancel listen to old credential listener error %v", err)
@@ -381,6 +384,10 @@ func (n *NacosRegistryClient) resetNacosTemplateConfigs(ctx *ServerContext, conf
}
}
for _, credentialKey := range credentialsNeedDelete {
delete(ctx.configsMap, credentialKey)
}
for _, data := range newCredentials {
ctx.configsMap[CredentialPrefix+data.group+"_"+data.dataId] = data
}
@@ -457,14 +464,15 @@ func (n *NacosRegistryClient) ListenToConfig(ctx *ServerContext, dataId string,
}
configListener := func(namespace, group, dataId, data string) {
if group == McpToolSpecGroup {
n.resetNacosTemplateConfigs(ctx, &wrap)
} else if group == McpServerSpecGroup {
n.refreshServiceListenerIfNeeded(ctx, data)
}
if ctx.serverChangeListener != nil && wrap.data != data {
wrap.data = data
if group == McpToolSpecGroup {
n.resetNacosTemplateConfigs(ctx, &wrap)
} else if group == McpServerSpecGroup {
n.refreshServiceListenerIfNeeded(ctx, data)
}
n.triggerMcpServerChange(ctx.versionedMcpServerInfo.serverInfo.Id)
}
}