diff --git a/CHANGELOG.md b/CHANGELOG.md
index e6957eb1f..6c690543c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -37,3 +37,4 @@
- [feat:support stat and event report with service discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1560)
- [fix: add gateway context config example.](https://github.com/Tencent/spring-cloud-tencent/pull/1561)
- [fix: use getActiveRuleId method to fix javaagent ratelimit pb method not found error.](https://github.com/Tencent/spring-cloud-tencent/pull/1575)
+- [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1583)
diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java
index 4cd01eb35..5b8ea67ae 100644
--- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java
+++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java
@@ -80,11 +80,12 @@ public class ConfigurationModifier implements PolarisConfigurationConfigModifier
}
private void initDataSource(ConfigurationImpl configuration) {
+ ConnectorConfigImpl connectorConfig = configuration.getConfigFile().getServerConnector();
// set connector type
- configuration.getConfigFile().getServerConnector().setConnectorType(polarisConfigProperties.getDataSource());
+ connectorConfig.setConnectorType(polarisConfigProperties.getDataSource());
if (StringUtils.equalsIgnoreCase(polarisConfigProperties.getDataSource(), LOCAL_FILE_CONNECTOR_TYPE)) {
String localFileRootPath = polarisConfigProperties.getLocalFileRootPath();
- configuration.getConfigFile().getServerConnector().setPersistDir(localFileRootPath);
+ connectorConfig.setPersistDir(localFileRootPath);
LOGGER.info("[SCT] Run spring cloud tencent config with local data source. localFileRootPath = {}", localFileRootPath);
return;
}
@@ -108,13 +109,15 @@ public class ConfigurationModifier implements PolarisConfigurationConfigModifier
checkAddressAccessible(configAddresses);
}
- configuration.getConfigFile().getServerConnector().setAddresses(configAddresses);
+ connectorConfig.setAddresses(configAddresses);
if (StringUtils.isNotEmpty(polarisConfigProperties.getToken())) {
- ConnectorConfigImpl connectorConfig = configuration.getConfigFile().getServerConnector();
connectorConfig.setToken(polarisConfigProperties.getToken());
}
+ connectorConfig.setEmptyProtectionEnable(polarisConfigProperties.isEmptyProtectionEnabled());
+ connectorConfig.setEmptyProtectionExpiredInterval(polarisConfigProperties.getEmptyProtectionExpiredInterval());
+
LOGGER.info("[SCT] Run spring cloud tencent config in polaris data source.");
}
diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java
index 24f6343b2..ba5cbe675 100644
--- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java
+++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java
@@ -97,6 +97,17 @@ public class PolarisConfigProperties {
private boolean checkAddress = true;
+ /**
+ * if empty protection is enabled.
+ */
+ private boolean emptyProtectionEnabled = true;
+
+ /**
+ * interval of empty protection. 7 days by default.
+ */
+ private long emptyProtectionExpiredInterval = 7 * 24 * 3600 * 1000L;
+
+
public boolean isEnabled() {
return enabled;
}
@@ -201,6 +212,22 @@ public class PolarisConfigProperties {
this.checkAddress = checkAddress;
}
+ public boolean isEmptyProtectionEnabled() {
+ return emptyProtectionEnabled;
+ }
+
+ public void setEmptyProtectionEnabled(boolean emptyProtectionEnabled) {
+ this.emptyProtectionEnabled = emptyProtectionEnabled;
+ }
+
+ public long getEmptyProtectionExpiredInterval() {
+ return emptyProtectionExpiredInterval;
+ }
+
+ public void setEmptyProtectionExpiredInterval(long emptyProtectionExpiredInterval) {
+ this.emptyProtectionExpiredInterval = emptyProtectionExpiredInterval;
+ }
+
@Override
public String toString() {
return "PolarisConfigProperties{" +
@@ -217,6 +244,8 @@ public class PolarisConfigProperties {
", localFileRootPath='" + localFileRootPath + '\'' +
", internalEnabled=" + internalEnabled +
", checkAddress=" + checkAddress +
+ ", emptyProtectionEnabled=" + emptyProtectionEnabled +
+ ", emptyProtectionExpiredInterval=" + emptyProtectionExpiredInterval +
'}';
}
}
diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml
index a585ed9d1..8ae7b7f9b 100644
--- a/spring-cloud-tencent-dependencies/pom.xml
+++ b/spring-cloud-tencent-dependencies/pom.xml
@@ -73,7 +73,7 @@
2.0.2.0-Hoxton.SR12-SNAPSHOT
- 2.0.1.0-SNAPSHOT
+ 2.0.2.0-SNAPSHOT
32.1.3-jre
1.2.13
1.7.0