Skip to content

Commit 4522b14

Browse files
committed
fix: use config snapshot in NacosConfigDataLoader to fix stale config in cluster mode
Fixes #4296. The config snapshot mechanism from PR #3644 was not applied to the Spring Boot 3.x ConfigData API path (NacosConfigDataLoader). In Nacos cluster mode, when a config change notification arrives from one node but the fetch goes to another node that hasn't synced yet, the client gets stale config. Assisted-by: Hermes Agent
1 parent ff1e3fb commit 4522b14

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

  • spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/configdata

spring-cloud-alibaba-starters/spring-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/configdata/NacosConfigDataLoader.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,14 @@ private List<PropertySource<?>> pullConfig(ConfigService configService, String g
154154
throws NacosException, IOException {
155155
String config = NacosSnapshotConfigManager.getAndRemoveConfigSnapshot(namespace,
156156
dataId, group);
157-
if (config == null) {
157+
if (config == null || config.isEmpty()) {
158158
config = configService.getConfig(dataId, group, timeout);
159159
}
160+
else {
161+
log.debug(String.format(
162+
"[Nacos Config] Load config from snapshot[dataId=%s, group=%s]",
163+
dataId, group));
164+
}
160165
logLoadInfo(group, dataId, config);
161166
// fixed issue: https://github.com/alibaba/spring-cloud-alibaba/issues/2906 .
162167
String configName = group + "@" + dataId;

0 commit comments

Comments
 (0)