[2.2.x] Fix nacos clusterName and extended properties (#3781)

pull/3793/head
Ken Liu 7 months ago committed by GitHub
parent 32a6e437ae
commit 1977188aff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -38,9 +38,6 @@ public class NacosConfigManager {
public NacosConfigManager(NacosConfigProperties nacosConfigProperties) { public NacosConfigManager(NacosConfigProperties nacosConfigProperties) {
this.nacosConfigProperties = nacosConfigProperties; this.nacosConfigProperties = nacosConfigProperties;
// Compatible with older code in NacosConfigProperties,It will be deleted in the
// future.
createConfigService(nacosConfigProperties);
} }
/** /**

@ -102,87 +102,50 @@ public class NacosConfigProperties {
@Autowired @Autowired
@JsonIgnore @JsonIgnore
private Environment environment; private Environment environment;
@PostConstruct
public void init() {
this.overrideFromEnv();
}
private void overrideFromEnv() {
if (StringUtils.isEmpty(this.getServerAddr())) {
String serverAddr = environment
.resolvePlaceholders("${spring.cloud.nacos.config.server-addr:}");
if (StringUtils.isEmpty(serverAddr)) {
serverAddr = environment.resolvePlaceholders(
"${spring.cloud.nacos.server-addr:localhost:8848}");
}
this.setServerAddr(serverAddr);
}
if (StringUtils.isEmpty(this.getUsername())) {
this.setUsername(
environment.resolvePlaceholders("${spring.cloud.nacos.username:}"));
}
if (StringUtils.isEmpty(this.getPassword())) {
this.setPassword(
environment.resolvePlaceholders("${spring.cloud.nacos.password:}"));
}
}
/** /**
* nacos config server address. * nacos config server address.
*/ */
private String serverAddr; private String serverAddr;
/** /**
* the nacos authentication username. * the nacos authentication username.
*/ */
private String username; private String username;
/** /**
* the nacos authentication password. * the nacos authentication password.
*/ */
private String password; private String password;
/** /**
* encode for nacos config content. * encode for nacos config content.
*/ */
private String encode; private String encode;
/** /**
* nacos config group, group is config data meta info. * nacos config group, group is config data meta info.
*/ */
private String group = "DEFAULT_GROUP"; private String group = "DEFAULT_GROUP";
/** /**
* nacos config dataId prefix. * nacos config dataId prefix.
*/ */
private String prefix; private String prefix;
/** /**
* the suffix of nacos config dataId, also the file extension of config content. * the suffix of nacos config dataId, also the file extension of config content.
*/ */
private String fileExtension = "properties"; private String fileExtension = "properties";
/** /**
* timeout for get config from nacos. * timeout for get config from nacos.
*/ */
private int timeout = 3000; private int timeout = 3000;
/** /**
* nacos maximum number of tolerable server reconnection errors. * nacos maximum number of tolerable server reconnection errors.
*/ */
private String maxRetry; private String maxRetry;
/** /**
* nacos get config long poll timeout. * nacos get config long poll timeout.
*/ */
private String configLongPollTimeout; private String configLongPollTimeout;
/** /**
* nacos get config failure retry time. * nacos get config failure retry time.
*/ */
private String configRetryTime; private String configRetryTime;
/** /**
* If you want to pull it yourself when the program starts to get the configuration * If you want to pull it yourself when the program starts to get the configuration
* for the first time, and the registered Listener is used for future configuration * for the first time, and the registered Listener is used for future configuration
@ -191,65 +154,79 @@ public class NacosConfigProperties {
* recommend that you use {@link ConfigService#getConfigAndSignListener} directly. * recommend that you use {@link ConfigService#getConfigAndSignListener} directly.
*/ */
private boolean enableRemoteSyncConfig = false; private boolean enableRemoteSyncConfig = false;
/** /**
* endpoint for Nacos, the domain name of a service, through which the server address * endpoint for Nacos, the domain name of a service, through which the server address
* can be dynamically obtained. * can be dynamically obtained.
*/ */
private String endpoint; private String endpoint;
/** /**
* namespace, separation configuration of different environments. * namespace, separation configuration of different environments.
*/ */
private String namespace; private String namespace;
/** /**
* access key for namespace. * access key for namespace.
*/ */
private String accessKey; private String accessKey;
/** /**
* secret key for namespace. * secret key for namespace.
*/ */
private String secretKey; private String secretKey;
/** /**
* role name for aliyun ram. * role name for aliyun ram.
*/ */
private String ramRoleName; private String ramRoleName;
/** /**
* context path for nacos config server. * context path for nacos config server.
*/ */
private String contextPath; private String contextPath;
/** /**
* nacos config cluster name. * nacos config cluster name.
*/ */
private String clusterName; private String clusterName;
/** /**
* nacos config dataId name. * nacos config dataId name.
*/ */
private String name; private String name;
/** /**
* a set of shared configurations .e.g: * a set of shared configurations .e.g:
* spring.cloud.nacos.config.shared-configs[0]=xxx . * spring.cloud.nacos.config.shared-configs[0]=xxx .
*/ */
private List<Config> sharedConfigs; private List<Config> sharedConfigs;
/** /**
* a set of extensional configurations .e.g: * a set of extensional configurations .e.g:
* spring.cloud.nacos.config.extension-configs[0]=xxx . * spring.cloud.nacos.config.extension-configs[0]=xxx .
*/ */
private List<Config> extensionConfigs; private List<Config> extensionConfigs;
/** /**
* the master switch for refresh configuration, it default opened(true). * the master switch for refresh configuration, it default opened(true).
*/ */
private boolean refreshEnabled = true; private boolean refreshEnabled = true;
@PostConstruct
public void init() {
this.overrideFromEnv();
}
private void overrideFromEnv() {
if (StringUtils.isEmpty(this.getServerAddr())) {
String serverAddr = environment
.resolvePlaceholders("${spring.cloud.nacos.config.server-addr:}");
if (StringUtils.isEmpty(serverAddr)) {
serverAddr = environment.resolvePlaceholders(
"${spring.cloud.nacos.server-addr:localhost:8848}");
}
this.setServerAddr(serverAddr);
}
if (StringUtils.isEmpty(this.getUsername())) {
this.setUsername(
environment.resolvePlaceholders("${spring.cloud.nacos.username:}"));
}
if (StringUtils.isEmpty(this.getPassword())) {
this.setPassword(
environment.resolvePlaceholders("${spring.cloud.nacos.password:}"));
}
}
// todo sts support // todo sts support
public String getServerAddr() { public String getServerAddr() {
@ -566,7 +543,7 @@ public class NacosConfigProperties {
*/ */
public Properties assembleConfigServiceProperties() { public Properties assembleConfigServiceProperties() {
Properties properties = new Properties(); Properties properties = new Properties();
properties.put(SERVER_ADDR, Objects.toString(this.serverAddr, DEFAULT_ADDRESS)); properties.put(SERVER_ADDR, Objects.toString(this.serverAddr, ""));
properties.put(USERNAME, Objects.toString(this.username, "")); properties.put(USERNAME, Objects.toString(this.username, ""));
properties.put(PASSWORD, Objects.toString(this.password, "")); properties.put(PASSWORD, Objects.toString(this.password, ""));
properties.put(ENCODE, Objects.toString(this.encode, "")); properties.put(ENCODE, Objects.toString(this.encode, ""));
@ -592,6 +569,12 @@ public class NacosConfigProperties {
} }
enrichNacosConfigProperties(properties); enrichNacosConfigProperties(properties);
// set default value when serverAddr and endpoint is empty
if (StringUtils.isEmpty(this.serverAddr) && StringUtils.isEmpty(this.endpoint)) {
properties.put(SERVER_ADDR, DEFAULT_ADDRESS);
}
return properties; return properties;
} }

@ -53,14 +53,12 @@ public class NacosContextRefresher
.getLogger(NacosContextRefresher.class); .getLogger(NacosContextRefresher.class);
private static final AtomicLong REFRESH_COUNT = new AtomicLong(0); private static final AtomicLong REFRESH_COUNT = new AtomicLong(0);
private NacosConfigProperties nacosConfigProperties;
private final boolean isRefreshEnabled; private final boolean isRefreshEnabled;
private final NacosRefreshHistory nacosRefreshHistory; private final NacosRefreshHistory nacosRefreshHistory;
private NacosConfigProperties nacosConfigProperties;
private ConfigService configService;
private final ConfigService configService; private NacosConfigManager configManager;
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
@ -70,9 +68,9 @@ public class NacosContextRefresher
public NacosContextRefresher(NacosConfigManager nacosConfigManager, public NacosContextRefresher(NacosConfigManager nacosConfigManager,
NacosRefreshHistory refreshHistory) { NacosRefreshHistory refreshHistory) {
this.configManager = nacosConfigManager;
this.nacosConfigProperties = nacosConfigManager.getNacosConfigProperties(); this.nacosConfigProperties = nacosConfigManager.getNacosConfigProperties();
this.nacosRefreshHistory = refreshHistory; this.nacosRefreshHistory = refreshHistory;
this.configService = nacosConfigManager.getConfigService();
this.isRefreshEnabled = this.nacosConfigProperties.isRefreshEnabled(); this.isRefreshEnabled = this.nacosConfigProperties.isRefreshEnabled();
} }
@ -91,6 +89,14 @@ public class NacosContextRefresher
this.configService = configService; this.configService = configService;
} }
public static long getRefreshCount() {
return REFRESH_COUNT.get();
}
public static void refreshCountIncrement() {
REFRESH_COUNT.incrementAndGet();
}
@Override @Override
public void onApplicationEvent(ApplicationReadyEvent event) { public void onApplicationEvent(ApplicationReadyEvent event) {
// many Spring context // many Spring context
@ -141,6 +147,9 @@ public class NacosContextRefresher
} }
}); });
try { try {
if (configService == null && configManager != null) {
configService = configManager.getConfigService();
}
configService.addListener(dataKey, groupKey, listener); configService.addListener(dataKey, groupKey, listener);
} }
catch (NacosException e) { catch (NacosException e) {
@ -171,12 +180,4 @@ public class NacosContextRefresher
return isRefreshEnabled; return isRefreshEnabled;
} }
public static long getRefreshCount() {
return REFRESH_COUNT.get();
}
public static void refreshCountIncrement() {
REFRESH_COUNT.incrementAndGet();
}
} }

@ -49,7 +49,6 @@ import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY; import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY;
import static com.alibaba.nacos.api.PropertyKeyConst.CLUSTER_NAME;
import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT; import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT;
import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT; import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT;
import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE; import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE;
@ -70,14 +69,12 @@ import static com.alibaba.nacos.api.PropertyKeyConst.USERNAME;
@ConfigurationProperties("spring.cloud.nacos.discovery") @ConfigurationProperties("spring.cloud.nacos.discovery")
public class NacosDiscoveryProperties { public class NacosDiscoveryProperties {
private static final Logger log = LoggerFactory
.getLogger(NacosDiscoveryProperties.class);
/** /**
* Prefix of {@link NacosDiscoveryProperties}. * Prefix of {@link NacosDiscoveryProperties}.
*/ */
public static final String PREFIX = "spring.cloud.nacos.discovery"; public static final String PREFIX = "spring.cloud.nacos.discovery";
private static final Logger log = LoggerFactory
.getLogger(NacosDiscoveryProperties.class);
private static final Pattern PATTERN = Pattern.compile("-(\\w)"); private static final Pattern PATTERN = Pattern.compile("-(\\w)");
private static final String IPV4 = "IPv4"; private static final String IPV4 = "IPv4";
@ -134,7 +131,7 @@ public class NacosDiscoveryProperties {
/** /**
* cluster name for nacos . * cluster name for nacos .
*/ */
private String clusterName = "DEFAULT"; private String clusterName;
/** /**
* group name for nacos. * group name for nacos.
@ -671,7 +668,8 @@ public class NacosDiscoveryProperties {
properties.put(ACCESS_KEY, accessKey); properties.put(ACCESS_KEY, accessKey);
properties.put(SECRET_KEY, secretKey); properties.put(SECRET_KEY, secretKey);
properties.put(CLUSTER_NAME, clusterName); // only used for instance.setClusterName()
// properties.put(CLUSTER_NAME, clusterName);
properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart); properties.put(NAMING_LOAD_CACHE_AT_START, namingLoadCacheAtStart);
enrichNacosDiscoveryProperties(properties); enrichNacosDiscoveryProperties(properties);

Loading…
Cancel
Save