Skip to content

Commit be75d41

Browse files
committed
feat: support config event
1 parent b222f4d commit be75d41

File tree

33 files changed

+606
-162
lines changed

33 files changed

+606
-162
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-common/polaris-model/src/main/java/com/tencent/polaris/api/pojo/ServiceEventKey.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public enum EventType {
5252
NEARBY_ROUTE_RULE,
5353
LOSSLESS,
5454
BLOCK_ALLOW_RULE,
55+
CONFIG_UPDATED,
5556
}
5657

5758
private final ServiceKey serviceKey;

polaris-configuration/polaris-configuration-api/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,12 @@
2020
<artifactId>polaris-client</artifactId>
2121
<version>${project.version}</version>
2222
</dependency>
23+
24+
<dependency>
25+
<groupId>com.tencent.polaris</groupId>
26+
<artifactId>polaris-plugin-api</artifactId>
27+
<version>${project.version}</version>
28+
</dependency>
29+
2330
</dependencies>
2431
</project>

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;

0 commit comments

Comments
 (0)