Skip to content

Commit 5a9753c

Browse files
authored
feat: support config event (#598)
1 parent b222f4d commit 5a9753c

File tree

33 files changed

+622
-168
lines changed

33 files changed

+622
-168
lines changed

polaris-common/polaris-client/src/main/java/com/tencent/polaris/client/flow/BaseFlow.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.tencent.polaris.api.plugin.compose.DefaultRouterChainGroup;
2828
import com.tencent.polaris.api.plugin.compose.Extensions;
2929
import com.tencent.polaris.api.plugin.compose.RouterChainGroup;
30+
import com.tencent.polaris.api.plugin.event.ConfigEvent;
3031
import com.tencent.polaris.api.plugin.event.EventReporter;
3132
import com.tencent.polaris.api.plugin.event.FlowEvent;
3233
import com.tencent.polaris.api.plugin.loadbalance.LoadBalancer;
@@ -368,4 +369,23 @@ public static void reportFlowEvent(Extensions extensions, FlowEvent flowEvent) {
368369
}
369370
}
370371
}
372+
373+
public static void reportConfigEvent(Extensions extensions, ConfigEvent flowEvent) {
374+
List<EventReporter> eventReporterList = extensions.getEventReporterList();
375+
if (LOG.isDebugEnabled()) {
376+
LOG.debug("Reporting config event: {}", flowEvent);
377+
}
378+
for (EventReporter eventReporter : eventReporterList) {
379+
try {
380+
if (!eventReporter.isEnabled()) {
381+
continue;
382+
}
383+
if (!eventReporter.reportEvent(flowEvent)) {
384+
LOG.warn("Report event by {} failed. Config event detail: {}", eventReporter.getName(), flowEvent);
385+
}
386+
} catch (Throwable throwable) {
387+
LOG.warn("Report event by {} failed. Config event detail: {}", eventReporter.getName(), flowEvent, throwable);
388+
}
389+
}
390+
}
371391
}

polaris-configuration/polaris-configuration-api/src/main/java/com/tencent/polaris/configuration/api/core/ConfigFileMetadata.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,6 @@ public interface ConfigFileMetadata {
2929
String getFileGroup();
3030

3131
String getFileName();
32+
33+
String getFileVersion();
3234
}

polaris-configuration/polaris-configuration-api/src/main/java/com/tencent/polaris/configuration/api/core/ConfigKVFileChangeEvent.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,20 @@
2020
import java.util.Map;
2121
import java.util.Set;
2222

23+
import com.tencent.polaris.api.plugin.configuration.ConfigFile;
24+
2325
/**
2426
* @author lepdou 2022-03-01
2527
*/
2628
public class ConfigKVFileChangeEvent {
2729

2830
private final Map<String, ConfigPropertyChangeInfo> propertyChangeInfos;
2931

30-
public ConfigKVFileChangeEvent(Map<String, ConfigPropertyChangeInfo> changeInfos) {
32+
private final com.tencent.polaris.api.plugin.configuration.ConfigFile configFile;
33+
34+
public ConfigKVFileChangeEvent(Map<String, ConfigPropertyChangeInfo> changeInfos, com.tencent.polaris.api.plugin.configuration.ConfigFile configFile) {
3135
this.propertyChangeInfos = changeInfos;
36+
this.configFile = configFile;
3237
}
3338

3439
public Set<String> changedKeys() {
@@ -67,4 +72,7 @@ public ChangeType getPropertiesChangeType(String propertyKey) {
6772
return ChangeType.NOT_CHANGED;
6873
}
6974

75+
public ConfigFile getConfigFile() {
76+
return configFile;
77+
}
7078
}

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/AbstractConfigFileRepo.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package com.tencent.polaris.configuration.client.internal;
1919

2020
import com.google.common.collect.Lists;
21+
import com.tencent.polaris.api.plugin.configuration.ConfigFile;
2122
import com.tencent.polaris.client.api.SDKContext;
2223
import com.tencent.polaris.configuration.api.core.ConfigFileMetadata;
2324
import com.tencent.polaris.logging.LoggerFactory;
@@ -65,10 +66,10 @@ public void removeChangeListener(ConfigFileRepoChangeListener listener) {
6566
listeners.remove(listener);
6667
}
6768

68-
protected void fireChangeEvent(String newContent) {
69+
protected void fireChangeEvent(ConfigFile configFile) {
6970
for (ConfigFileRepoChangeListener listener : listeners) {
7071
try {
71-
listener.onChange(configFileMetadata, newContent);
72+
listener.onChange(configFileMetadata, configFile);
7273
} catch (Throwable t) {
7374
LOGGER.error("[Config] invoke config file repo change listener failed. config file = {}, listener = {}",
7475
configFileMetadata, listener.getClass(), t);

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/CompositeConfigFile.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,4 +193,9 @@ public String getFileGroup() {
193193
public String getFileName() {
194194
return "";
195195
}
196+
197+
@Override
198+
public String getFileVersion() {
199+
return "";
200+
}
196201
}

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/ConfigFileRepoChangeListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,14 @@
1717

1818
package com.tencent.polaris.configuration.client.internal;
1919

20+
import com.tencent.polaris.api.plugin.configuration.ConfigFile;
2021
import com.tencent.polaris.configuration.api.core.ConfigFileMetadata;
2122

2223
/**
2324
* @author lepdou 2022-03-02
2425
*/
2526
public interface ConfigFileRepoChangeListener {
2627

27-
void onChange(ConfigFileMetadata configFileMetadata, String newContent);
28+
void onChange(ConfigFileMetadata configFileMetadata, ConfigFile configFile);
2829

2930
}

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/ConfigPropertiesFile.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.common.collect.Lists;
2424
import com.google.common.collect.Maps;
2525
import com.tencent.polaris.api.config.configuration.ConfigFileConfig;
26+
import com.tencent.polaris.api.plugin.configuration.ConfigFile;
2627
import com.tencent.polaris.configuration.api.core.*;
2728
import com.tencent.polaris.configuration.client.util.ConfigFileUtils;
2829
import com.tencent.polaris.configuration.client.util.ConvertFunctions;
@@ -321,9 +322,9 @@ public void removeChangeListener(ConfigKVFileChangeListener listener) {
321322
}
322323

323324
@Override
324-
public void onChange(ConfigFileMetadata configFileMetadata, String newContent) {
325-
super.onChange(configFileMetadata, newContent);
326-
325+
public void onChange(ConfigFileMetadata configFileMetadata, ConfigFile configFile) {
326+
super.onChange(configFileMetadata, configFile);
327+
String newContent = Optional.ofNullable(configFile).map(ConfigFile::getContent).orElse(null);
327328
Properties oldProperties = this.properties.get();
328329
if (oldProperties == null) {
329330
oldProperties = new Properties();
@@ -358,7 +359,7 @@ public void onChange(ConfigFileMetadata configFileMetadata, String newContent) {
358359

359360
clearConfigCache();
360361

361-
ConfigKVFileChangeEvent event = new ConfigKVFileChangeEvent(changeInfos);
362+
ConfigKVFileChangeEvent event = new ConfigKVFileChangeEvent(changeInfos, configFile);
362363

363364
fireChangeEvent(event);
364365
}

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/DefaultConfigFile.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.lang.reflect.Type;
3434
import java.util.List;
3535
import java.util.Objects;
36+
import java.util.Optional;
3637
import java.util.concurrent.ExecutorService;
3738
import java.util.concurrent.Executors;
3839
import java.util.concurrent.TimeUnit;
@@ -170,8 +171,9 @@ public void removeChangeListener(ConfigFileChangeListener listener) {
170171
}
171172

172173
@Override
173-
public void onChange(ConfigFileMetadata configFileMetadata, String newContent) {
174+
public void onChange(ConfigFileMetadata configFileMetadata, com.tencent.polaris.api.plugin.configuration.ConfigFile configFile) {
174175
String oldContent = this.content;
176+
String newContent = Optional.ofNullable(configFile).map(com.tencent.polaris.api.plugin.configuration.ConfigFile::getContent).orElse(null);
175177
this.content = newContent;
176178

177179
ChangeType changeType = ChangeType.MODIFIED;

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/DefaultConfigFileMetadata.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,20 @@ public class DefaultConfigFileMetadata implements ConfigFileMetadata {
2929
private final String namespace;
3030
private final String fileGroup;
3131
private final String fileName;
32+
private final String fileVersion;
3233

3334
public DefaultConfigFileMetadata(String namespace, String fileGroup, String fileName) {
3435
this.namespace = namespace;
3536
this.fileGroup = fileGroup;
3637
this.fileName = fileName;
38+
this.fileVersion = null;
39+
}
40+
41+
public DefaultConfigFileMetadata(String namespace, String fileGroup, String fileName, String fileVersion) {
42+
this.namespace = namespace;
43+
this.fileGroup = fileGroup;
44+
this.fileName = fileName;
45+
this.fileVersion = fileVersion;
3746
}
3847

3948
@Override
@@ -51,6 +60,11 @@ public String getFileName() {
5160
return fileName;
5261
}
5362

63+
@Override
64+
public String getFileVersion() {
65+
return fileVersion;
66+
}
67+
5468
@Override
5569
public int hashCode() {
5670
return Objects.hash(namespace, fileGroup, fileName);

polaris-configuration/polaris-configuration-client/src/main/java/com/tencent/polaris/configuration/client/internal/DefaultRevisableConfigFileGroupPullService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ private void pullAll() {
134134

135135
List<ConfigFileMetadata> configFileMetadataList = new ArrayList<>();
136136
for (ConfigFile configFile : configFileList) {
137-
ConfigFileMetadata configFileMetadata = new DefaultConfigFileMetadata(configFile.getNamespace(), configFile.getFileGroup(), configFile.getFileName());
137+
ConfigFileMetadata configFileMetadata = new DefaultConfigFileMetadata(configFile.getNamespace(),
138+
configFile.getFileGroup(), configFile.getFileName(), configFile.getName());
138139
configFileMetadataList.add(configFileMetadata);
139140
}
140141
if (configFileGroupCache.containsKey(metadata)) {

0 commit comments

Comments
 (0)