From d3576f81dfe8e34b238e658d0c28cc45a9bcdef8 Mon Sep 17 00:00:00 2001 From: hanbingleixue Date: Tue, 25 Jun 2024 09:08:23 +0800 Subject: [PATCH] Fix the issue of configuration modification failure Signed-off-by: hanbingleixue --- .../kie/client/kie/KieClient.java | 11 ++++++-- .../kie/listener/SubscriberManager.java | 9 +----- .../zookeeper/ZooKeeperClient.java | 7 ++++- sermant-backend/pom.xml | 28 +++++++++++++++++++ .../backend/service/ConfigService.java | 4 +-- 5 files changed, 46 insertions(+), 13 deletions(-) diff --git a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/client/kie/KieClient.java b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/client/kie/KieClient.java index f5e8170174..ac8ca63eae 100644 --- a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/client/kie/KieClient.java +++ b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/client/kie/KieClient.java @@ -153,7 +153,14 @@ public boolean publishConfig(String key, Map labels, String cont @Override public boolean publishConfig(String key, String group, String content) { - return this.publishConfig(key, LabelGroupUtils.resolveGroupLabels(group), content, true); + final Optional keyIdOptional = this.getKeyId(key, group); + if (keyIdOptional.isPresent()) { + return this.doUpdateConfig(keyIdOptional.get(), content, true); + } + + // If not exists, then publish + final Map labels = LabelGroupUtils.resolveGroupLabels(group); + return this.publishConfig(key, labels, content, true); } /** @@ -255,7 +262,7 @@ public boolean removeConfig(String key, String group) { return false; } final HttpResult httpResult = this.httpClient.doDelete(buildKeyIdUrl(keyIdOptional.get())); - return httpResult.getCode() == HttpStatus.SC_OK; + return httpResult.getCode() == HttpStatus.SC_NO_CONTENT; } @Override diff --git a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/listener/SubscriberManager.java b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/listener/SubscriberManager.java index 9136f15d53..6edac60cc0 100644 --- a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/listener/SubscriberManager.java +++ b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/kie/listener/SubscriberManager.java @@ -216,14 +216,7 @@ public boolean removeGroupListener(String group, DynamicConfigListener listener) * @return publish result */ public boolean publishConfig(String key, String group, String content) { - final Optional keyIdOptional = this.kieClient.getKeyId(key, group); - if (!keyIdOptional.isPresent()) { - // If not exists, then publish - final Map labels = LabelGroupUtils.resolveGroupLabels(group); - return kieClient.publishConfig(key, labels, content, true); - } else { - return kieClient.doUpdateConfig(keyIdOptional.get(), content, true); - } + return kieClient.publishConfig(key, group, content); } /** diff --git a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/zookeeper/ZooKeeperClient.java b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/zookeeper/ZooKeeperClient.java index b7e3328a17..2b44015e15 100644 --- a/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/zookeeper/ZooKeeperClient.java +++ b/sermant-agentcore/sermant-agentcore-implement/src/main/java/io/sermant/implement/service/dynamicconfig/zookeeper/ZooKeeperClient.java @@ -171,7 +171,12 @@ private Map> fuzzyGetConfigListByGroupAndKey(String key, St if (!child.contains(nodeName)) { continue; } - String childPath = parentNodePath + child; + String childPath; + if (parentNodePath.endsWith(String.valueOf(ZK_PATH_SEPARATOR))) { + childPath = parentNodePath + child; + } else { + childPath = parentNodePath + ZK_PATH_SEPARATOR + child; + } List subChild = this.zkClient.getChildren(childPath, false); if (subChild == null || subChild.isEmpty()) { continue; diff --git a/sermant-backend/pom.xml b/sermant-backend/pom.xml index ceeea48ecc..9a4791a51e 100644 --- a/sermant-backend/pom.xml +++ b/sermant-backend/pom.xml @@ -32,6 +32,7 @@ 1.8.4 9.0.86 5.3.33 + 2.2.1 ${project.basedir}/src/main/webapp/frontend @@ -250,8 +251,35 @@ io.sermant sermant-agentcore-implement + + + io.envoyproxy.controlplane + api + + + io.grpc + grpc-stub + + + io.grpc + grpc-netty + + + io.grpc + grpc-protobuf + + + com.alibaba.nacos + nacos-client + + ${project.version} + + com.alibaba.nacos + nacos-client + ${nacos-client-version} + diff --git a/sermant-backend/src/main/java/io/sermant/backend/service/ConfigService.java b/sermant-backend/src/main/java/io/sermant/backend/service/ConfigService.java index 61a956022b..2d0a76ea74 100644 --- a/sermant-backend/src/main/java/io/sermant/backend/service/ConfigService.java +++ b/sermant-backend/src/main/java/io/sermant/backend/service/ConfigService.java @@ -250,7 +250,7 @@ private ConfigClient getConfigClient(String namespace) { return configClient; } ConfigClient client = CONFIG_CLIENT_MAP.get(namespace); - if (client == null || !client.isConnect()) { + if (client == null) { return createNacosClient(namespace); } return client; @@ -326,7 +326,7 @@ public void reConnection() { } if (ConfigCenterType.NACOS.name().equals(dynamicConfig.getDynamicConfigType()) && !configClient.isConnect()) { for (Map.Entry entry : CONFIG_CLIENT_MAP.entrySet()) { - getConfigClient(entry.getKey()); + createNacosClient(entry.getKey()); } } }