Skip to content

Commit 3944492

Browse files
authored
[#4811] Support logging fileName for configurations (#4838)
1 parent 7200043 commit 3944492

File tree

2 files changed

+81
-0
lines changed
  • clients
    • config-center-client/src/main/java/org/apache/servicecomb/config/center/client
    • config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client

2 files changed

+81
-0
lines changed

clients/config-center-client/src/main/java/org/apache/servicecomb/config/center/client/ConfigCenterClient.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
package org.apache.servicecomb.config.center.client;
1919

2020
import java.io.IOException;
21+
import java.util.ArrayList;
2122
import java.util.HashMap;
23+
import java.util.List;
2224
import java.util.Map;
2325

2426
import org.apache.commons.lang3.StringUtils;
@@ -33,6 +35,7 @@
3335
import org.apache.servicecomb.http.client.utils.ServiceCombServiceAvailableUtils;
3436
import org.slf4j.Logger;
3537
import org.slf4j.LoggerFactory;
38+
import org.springframework.util.CollectionUtils;
3639

3740
import com.fasterxml.jackson.core.type.TypeReference;
3841
import com.google.common.eventbus.EventBus;
@@ -56,6 +59,8 @@ public class ConfigCenterClient implements ConfigCenterOperation {
5659

5760
private final ConfigCenterAddressManager addressManager;
5861

62+
private final Map<String, List<String>> dimensionConfigNames = new HashMap<>();
63+
5964
public ConfigCenterClient(ConfigCenterAddressManager addressManager, HttpTransport httpTransport) {
6065
this.addressManager = addressManager;
6166
this.httpTransport = httpTransport;
@@ -95,18 +100,24 @@ public QueryConfigurationsResponse queryConfigurations(QueryConfigurationsReques
95100

96101
if (allConfigMap.get(APPLICATION_CONFIG) != null) {
97102
configurations.putAll(allConfigMap.get(APPLICATION_CONFIG));
103+
logConfigurationNames(APPLICATION_CONFIG, allConfigMap.get(APPLICATION_CONFIG));
98104
}
99105

100106
if (allConfigMap.get(buildDimensionsInfo(request, false)) != null) {
101107
configurations.putAll(allConfigMap.get(buildDimensionsInfo(request, false)));
108+
logConfigurationNames(buildDimensionsInfo(request, false),
109+
allConfigMap.get(buildDimensionsInfo(request, false)));
102110
}
103111

104112
if (allConfigMap.get(buildDarkLaunchDimensionsInfo(request)) != null) {
105113
configurations.putAll(allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
114+
logConfigurationNames(buildDarkLaunchDimensionsInfo(request),
115+
allConfigMap.get(buildDarkLaunchDimensionsInfo(request)));
106116
}
107117

108118
if (allConfigMap.get(dimensionsInfo) != null) {
109119
configurations.putAll(allConfigMap.get(dimensionsInfo));
120+
logConfigurationNames(dimensionsInfo, allConfigMap.get(dimensionsInfo));
110121
}
111122
queryConfigurationsResponse.setConfigurations(configurations);
112123
queryConfigurationsResponse.setChanged(true);
@@ -140,6 +151,38 @@ public QueryConfigurationsResponse queryConfigurations(QueryConfigurationsReques
140151
}
141152
}
142153

154+
/**
155+
* Only the name of the new configuration item is printed.
156+
* No log is printed when the configuration content is updated.
157+
*
158+
* @param dimension dimension
159+
* @param configs configs
160+
*/
161+
private void logConfigurationNames(String dimension, Map<String, Object> configs) {
162+
if (CollectionUtils.isEmpty(configs)) {
163+
return;
164+
}
165+
List<String> configNames = dimensionConfigNames.get(dimension);
166+
if (configNames == null) {
167+
configNames = new ArrayList<>();
168+
}
169+
StringBuilder names = new StringBuilder();
170+
for (String key : configs.keySet()) {
171+
if (configNames.contains(key)) {
172+
continue;
173+
}
174+
names.append(key).append(",");
175+
configNames.add(key);
176+
}
177+
if (names.isEmpty()) {
178+
return;
179+
}
180+
dimensionConfigNames.put(dimension, configNames);
181+
String fileNames = names.substring(0, names.length() - 1);
182+
LOGGER.info("pulling dimension [{}] configurations success, get config names: [{}].",
183+
dimension, fileNames);
184+
}
185+
143186
@Override
144187
public void checkAddressAvailable(String address) {
145188
ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, address, httpTransport, ADDRESS_CHECK_PATH);

clients/config-kie-client/src/main/java/org/apache/servicecomb/config/kie/client/KieClient.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121

2222
import java.io.StringReader;
2323
import java.nio.charset.StandardCharsets;
24+
import java.util.ArrayList;
2425
import java.util.Collections;
2526
import java.util.Comparator;
2627
import java.util.Enumeration;
2728
import java.util.HashMap;
29+
import java.util.List;
2830
import java.util.Map;
2931
import java.util.Properties;
3032
import java.util.stream.Collectors;
@@ -49,6 +51,7 @@
4951
import org.slf4j.LoggerFactory;
5052
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
5153
import org.springframework.core.io.ByteArrayResource;
54+
import org.springframework.util.CollectionUtils;
5255

5356
public class KieClient implements KieConfigOperation {
5457

@@ -66,6 +69,8 @@ public class KieClient implements KieConfigOperation {
6669

6770
public static final String DEFAULT_KIE_API_VERSION = "v1";
6871

72+
private final Map<String, List<String>> dimensionConfigNames = new HashMap<>();
73+
6974
public KieClient(KieAddressManager addressManager, HttpTransport httpTransport, KieConfiguration kieConfiguration) {
7075
this.httpTransport = httpTransport;
7176
this.addressManager = addressManager;
@@ -90,6 +95,7 @@ public ConfigurationsResponse queryConfigurations(ConfigurationsRequest request,
9095
if (httpResponse.getStatusCode() == HttpStatus.SC_OK) {
9196
revision = httpResponse.getHeader("X-Kie-Revision");
9297
KVResponse allConfigList = HttpUtils.deserialize(httpResponse.getContent(), KVResponse.class);
98+
logConfigurationNames(request.getLabelsQuery(), allConfigList.getData());
9399
Map<String, Object> configurations = getConfigByLabel(allConfigList);
94100
configurationsResponse.setConfigurations(configurations);
95101
configurationsResponse.setChanged(true);
@@ -122,6 +128,38 @@ public ConfigurationsResponse queryConfigurations(ConfigurationsRequest request,
122128
}
123129
}
124130

131+
/**
132+
* Only the name of the new configuration item is printed.
133+
* No log is printed when the configuration content is updated.
134+
*
135+
* @param dimension dimension
136+
* @param data configs-data
137+
*/
138+
private void logConfigurationNames(String dimension, List<KVDoc> data) {
139+
if (CollectionUtils.isEmpty(data)) {
140+
return;
141+
}
142+
List<String> configNames = dimensionConfigNames.get(dimension);
143+
if (configNames == null) {
144+
configNames = new ArrayList<>();
145+
}
146+
StringBuilder names = new StringBuilder();
147+
for (KVDoc doc : data) {
148+
if (configNames.contains(doc.getKey())) {
149+
continue;
150+
}
151+
names.append(doc.getKey()).append(",");
152+
configNames.add(doc.getKey());
153+
}
154+
if (names.isEmpty()) {
155+
return;
156+
}
157+
dimensionConfigNames.put(dimension, configNames);
158+
String fileNames = names.substring(0, names.length() - 1);
159+
LOGGER.info("pulling dimension [{}] configurations success, get config names: [{}].",
160+
dimension, fileNames);
161+
}
162+
125163
@Override
126164
public void checkAddressAvailable(String address) {
127165
ServiceCombServiceAvailableUtils.checkAddressAvailable(addressManager, address, httpTransport, ADDRESS_CHECK_PATH);

0 commit comments

Comments
 (0)