diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32a4e0a22..e79fbed49 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,4 +2,4 @@
---
- [fix: add gateway context config example.](https://github.com/Tencent/spring-cloud-tencent/pull/1563)
-
+- [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1585)
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 efa425b9d..dd7ad73c9 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;
}
@@ -110,13 +111,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 2b330ea19..8c8341216 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
@@ -100,6 +100,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;
}
@@ -204,6 +215,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{" +
@@ -220,6 +247,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 a97bad33f..3c521e370 100644
--- a/spring-cloud-tencent-dependencies/pom.xml
+++ b/spring-cloud-tencent-dependencies/pom.xml
@@ -74,7 +74,7 @@
2.0.2.0-2022.0.5-SNAPSHOT
- 2.0.1.0
+ 2.0.2.0-SNAPSHOT
2.2.0