Skip to content

Commit 975fe82

Browse files
authored
only save to local file when version less than remote (#219)
* only save to local file when version less than remote * fix ut
1 parent 2934fe6 commit 975fe82

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

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

+9-4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class RemoteConfigFileRepo extends AbstractConfigFileRepo {
3434
private final ConfigFileConnector configFileConnector;
3535
private final RetryPolicy retryPolicy;
3636
private ConfigFilePersistentHandler configFilePersistHandler;
37+
private final boolean fallbackToLocalCache;
3738

3839
static {
3940
pullExecutorService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("Configuration-Pull"));
@@ -67,6 +68,7 @@ public RemoteConfigFileRepo(SDKContext sdkContext,
6768
this.configFileConnector = (ConfigFileConnector) sdkContext.getExtensions().getPlugins()
6869
.getPlugin(PluginTypes.CONFIG_FILE_CONNECTOR.getBaseType(), configFileConnectorType);
6970
}
71+
7072
if (configFilePersistHandler != null) {
7173
this.configFilePersistHandler = configFilePersistHandler;
7274
}
@@ -78,6 +80,9 @@ public RemoteConfigFileRepo(SDKContext sdkContext,
7880
LOGGER.warn("config file persist handler init fail:" + e.getMessage(), e);
7981
}
8082
}
83+
84+
this.fallbackToLocalCache = sdkContext.getConfig().getConfigFile().getServerConnector().getFallbackToLocalCache();
85+
8186
//同步从远程仓库拉取一次
8287
pull();
8388

@@ -141,8 +146,6 @@ protected void doPull() {
141146

142147
if (response.getCode() == ServerCodes.EXECUTE_SUCCESS) {
143148
ConfigFile pulledConfigFile = response.getConfigFile();
144-
// update local file cache
145-
this.configFilePersistHandler.asyncSaveConfigFile(pulledConfigFile);
146149

147150
//本地配置文件落后,更新内存缓存
148151
if (remoteConfigFile.get() == null ||
@@ -152,6 +155,9 @@ protected void doPull() {
152155

153156
//配置有更新,触发回调
154157
fireChangeEvent(copiedConfigFile.getContent());
158+
159+
// update local file cache
160+
this.configFilePersistHandler.asyncSaveConfigFile(pulledConfigFile);
155161
}
156162
return;
157163
}
@@ -196,8 +202,7 @@ protected void doPull() {
196202
}
197203

198204
private void fallbackIfNecessary(final int retryTimes, ConfigFile configFileReq) {
199-
if (retryTimes >= PULL_CONFIG_RETRY_TIMES &&
200-
sdkContext.getConfig().getConfigFile().getServerConnector().getFallbackToLocalCache()) {
205+
if (retryTimes >= PULL_CONFIG_RETRY_TIMES && fallbackToLocalCache) {
201206
ConfigFile configFileRes = configFilePersistHandler.loadPersistedConfigFile(configFileReq);
202207
if (configFileRes != null) {
203208
LOGGER.info("[Config] failed to pull config file from remote,fallback to local cache success.{}.", configFileRes);

polaris-configuration/polaris-configuration-client/src/test/java/com/tencent/polaris/configuration/client/internal/RemoteConfigFileRepoTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
import com.tencent.polaris.configuration.api.core.ConfigFileMetadata;
1111
import com.tencent.polaris.configuration.client.ConfigFileTestUtils;
1212

13+
import com.tencent.polaris.factory.config.ConfigurationImpl;
14+
import com.tencent.polaris.factory.config.configuration.ConfigFileConfigImpl;
15+
import com.tencent.polaris.factory.config.configuration.ConnectorConfigImpl;
1316
import org.junit.Assert;
17+
import org.junit.Before;
1418
import org.junit.Test;
1519
import org.junit.runner.RunWith;
1620
import org.mockito.Mock;
@@ -40,6 +44,17 @@ public class RemoteConfigFileRepoTest {
4044
@Mock
4145
private ConfigFilePersistentHandler configFilePersistHandler;
4246

47+
@Before
48+
public void before() {
49+
ConfigurationImpl configuration = new ConfigurationImpl();
50+
ConfigFileConfigImpl configFileConfig = new ConfigFileConfigImpl();
51+
ConnectorConfigImpl connectorConfig = new ConnectorConfigImpl();
52+
connectorConfig.setFallbackToLocalCache(true);
53+
configFileConfig.setServerConnector(connectorConfig);
54+
configuration.setConfigFile(configFileConfig);
55+
when(sdkContext.getConfig()).thenReturn(configuration);
56+
}
57+
4358
@Test
4459
public void testPullSuccess() {
4560
ConfigFileMetadata configFileMetadata = ConfigFileTestUtils.assembleDefaultConfigFileMeta();

pom.xml

+3-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@
6464

6565
<properties>
6666
<!-- Project revision -->
67-
<revision>1.8.1-SNAPSHOT</revision>
67+
68+
<revision>1.9.0-SNAPSHOT</revision>
69+
6870
<timestamp>${maven.build.timestamp}</timestamp>
6971
<skip.maven.deploy>false</skip.maven.deploy>
7072
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>

0 commit comments

Comments
 (0)