Skip to content

Commit 2907e5b

Browse files
fix:fix config startup load cache retry bug. (#609)
1 parent 230fb7f commit 2907e5b

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -206,24 +206,32 @@ private Path doSaveConfigFile(ConfigFile configFile) {
206206
* @param configFile 配置文件
207207
* @return 配置文件
208208
*/
209-
public ConfigFile loadPersistedConfigFile(ConfigFile configFile) {
209+
public ConfigFile loadPersistedConfigFile(ConfigFile configFile, boolean needRetry) {
210210
String fileName = configFileToFileName(configFile);
211211
String persistFilePathStr = persistDirPath + File.separator + fileName;
212212
Path persistPath = FileSystems.getDefault().getPath(persistFilePathStr);
213-
int retryTimes = 0;
214213
ConfigFile resConfigFile = null;
215-
while (retryTimes <= maxReadRetry) {
216-
retryTimes++;
214+
if (needRetry) {
215+
int retryTimes = 0;
216+
while (retryTimes <= maxReadRetry) {
217+
retryTimes++;
218+
resConfigFile = loadConfigFile(persistPath.toFile(), configFile);
219+
if (null == resConfigFile) {
220+
Utils.sleepUninterrupted(retryInterval);
221+
continue;
222+
}
223+
break;
224+
}
225+
if (null == resConfigFile) {
226+
LOG.debug("fail to read config file from {} after retry {} times", fileName, retryTimes);
227+
return null;
228+
}
229+
} else {
217230
resConfigFile = loadConfigFile(persistPath.toFile(), configFile);
218231
if (null == resConfigFile) {
219-
Utils.sleepUninterrupted(retryInterval);
220-
continue;
232+
LOG.debug("fail to read config file from {}.", fileName);
233+
return null;
221234
}
222-
break;
223-
}
224-
if (null == resConfigFile) {
225-
LOG.debug("fail to read config file from {} after retry {} times", fileName, retryTimes);
226-
return null;
227235
}
228236
return resConfigFile;
229237
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ private void fallbackIfNecessary(final int retryTimes, ConfigFile configFileReq)
253253
if (retryTimes >= PULL_CONFIG_RETRY_TIMES) {
254254
LOGGER.info("[Config] failed to pull config file from remote.");
255255
//重试次数超过上限,从本地缓存拉取
256-
loadLocalCache(configFileReq);
256+
loadLocalCache(configFileReq, true);
257257
}
258258
}
259259

@@ -268,13 +268,14 @@ private void fallbackIfNecessaryWhenStartingUp(ConfigFile configFileReq) {
268268
if (!initFlag) {
269269
// 第一次启动的时候,如果拉取到空配置,则尝试从缓存中获取
270270
LOGGER.info("[Config] load local cache because of empty config when starting up.");
271-
loadLocalCache(configFileReq);
271+
// 不需要重试
272+
loadLocalCache(configFileReq, false);
272273
}
273274
}
274275

275-
private void loadLocalCache(ConfigFile configFileReq) {
276+
private void loadLocalCache(ConfigFile configFileReq, boolean needRetry) {
276277
if (fallbackToLocalCache) {
277-
ConfigFile configFileRes = configFilePersistHandler.loadPersistedConfigFile(configFileReq);
278+
ConfigFile configFileRes = configFilePersistHandler.loadPersistedConfigFile(configFileReq, needRetry);
278279
if (configFileRes != null) {
279280
LOGGER.info("[Config] load local cache success.{}.", configFileRes);
280281
remoteConfigFile.set(configFileRes);

0 commit comments

Comments
 (0)