Support caching of dynamic property (#7760)
This commit is contained in:
parent
322fb9724e
commit
a08aabf69a
|
|
@ -26,6 +26,7 @@ import java.io.StringReader;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;
|
||||
|
|
@ -36,6 +37,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SE
|
|||
*/
|
||||
public class ConfigurationUtils {
|
||||
private static final Logger logger = LoggerFactory.getLogger(ConfigurationUtils.class);
|
||||
private static Map<String, String> CACHED_DYNAMIC_PROPERTIES = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* Used to get properties from the jvm
|
||||
|
|
@ -96,6 +98,11 @@ public class ConfigurationUtils {
|
|||
return timeout;
|
||||
}
|
||||
|
||||
public static String getCachedDynamicProperty(String key, String defaultValue) {
|
||||
String value = CACHED_DYNAMIC_PROPERTIES.computeIfAbsent(key, _k -> ConfigurationUtils.getDynamicProperty(key, ""));
|
||||
return StringUtils.isEmpty(value) ? defaultValue : value;
|
||||
}
|
||||
|
||||
public static String getDynamicProperty(String property) {
|
||||
return getDynamicProperty(property, null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ public class ConfigManagerTest {
|
|||
// Test ApplicationConfig correlative methods
|
||||
@Test
|
||||
public void testApplicationConfig() {
|
||||
ApplicationConfig config = new ApplicationConfig();
|
||||
ApplicationConfig config = new ApplicationConfig("ConfigManagerTest");
|
||||
configManager.setApplication(config);
|
||||
assertTrue(configManager.getApplication().isPresent());
|
||||
assertEquals(config, configManager.getApplication().get());
|
||||
|
|
@ -197,7 +197,7 @@ public class ConfigManagerTest {
|
|||
|
||||
@Test
|
||||
public void testAddConfig() {
|
||||
configManager.addConfig(new ApplicationConfig());
|
||||
configManager.addConfig(new ApplicationConfig("ConfigManagerTest"));
|
||||
configManager.addConfig(new ProviderConfig());
|
||||
configManager.addConfig(new ProtocolConfig());
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ public class ConfigValidationUtils {
|
|||
*/
|
||||
private static final Pattern PATTERN_KEY = Pattern.compile("[*,\\-._0-9a-zA-Z]+");
|
||||
|
||||
|
||||
public static List<URL> loadRegistries(AbstractInterfaceConfig interfaceConfig, boolean provider) {
|
||||
// check && override if necessary
|
||||
List<URL> registryList = new ArrayList<URL>();
|
||||
|
|
@ -220,7 +219,7 @@ public class ConfigValidationUtils {
|
|||
// for registries enabled service discovery, automatically register interface compatible addresses.
|
||||
String registerMode;
|
||||
if (SERVICE_REGISTRY_PROTOCOL.equals(registryURL.getProtocol())) {
|
||||
registerMode = registryURL.getParameter(REGISTER_MODE_KEY, ConfigurationUtils.getDynamicGlobalConfiguration().getString(DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_INSTANCE));
|
||||
registerMode = registryURL.getParameter(REGISTER_MODE_KEY, ConfigurationUtils.getCachedDynamicProperty(DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_INSTANCE));
|
||||
if (!isValidRegisterMode(registerMode)) {
|
||||
registerMode = DEFAULT_REGISTER_MODE_INSTANCE;
|
||||
}
|
||||
|
|
@ -234,7 +233,7 @@ public class ConfigValidationUtils {
|
|||
result.add(interfaceCompatibleRegistryURL);
|
||||
}
|
||||
} else {
|
||||
registerMode = registryURL.getParameter(REGISTER_MODE_KEY, ConfigurationUtils.getDynamicGlobalConfiguration().getString(DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_INTERFACE));
|
||||
registerMode = registryURL.getParameter(REGISTER_MODE_KEY, ConfigurationUtils.getCachedDynamicProperty(DUBBO_REGISTER_MODE_DEFAULT_KEY, DEFAULT_REGISTER_MODE_INTERFACE));
|
||||
if (!isValidRegisterMode(registerMode)) {
|
||||
registerMode = DEFAULT_REGISTER_MODE_INTERFACE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@ public class AbstractInterfaceConfigTest {
|
|||
@Test
|
||||
public void testApplication() {
|
||||
InterfaceConfig interfaceConfig = new InterfaceConfig();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("AbstractInterfaceConfigTest");
|
||||
interfaceConfig.setApplication(applicationConfig);
|
||||
Assertions.assertSame(applicationConfig, interfaceConfig.getApplication());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ class AbstractInterfaceBuilderTest {
|
|||
|
||||
@Test
|
||||
void application() {
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("AbtractInterfaceBuilderTest");
|
||||
|
||||
InterfaceBuilder builder = new InterfaceBuilder();
|
||||
builder.application(applicationConfig);
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public class DefaultMigrationAddressComparator implements MigrationAddressCompar
|
|||
if (configedThreshold != null && configedThreshold >= 0) {
|
||||
rawThreshold = String.valueOf(configedThreshold);
|
||||
}
|
||||
rawThreshold = StringUtils.isNotEmpty(rawThreshold) ? rawThreshold : ConfigurationUtils.getDynamicProperty(MIGRATION_THRESHOLD, DEFAULT_THRESHOLD_STRING);
|
||||
rawThreshold = StringUtils.isNotEmpty(rawThreshold) ? rawThreshold : ConfigurationUtils.getCachedDynamicProperty(MIGRATION_THRESHOLD, DEFAULT_THRESHOLD_STRING);
|
||||
float threshold;
|
||||
try {
|
||||
threshold = Float.parseFloat(rawThreshold);
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public class MigrationRuleHandler<T> {
|
|||
MigrationStep step = MigrationStep.INTERFACE_FIRST;
|
||||
Float threshold = -1f;
|
||||
if (rule == MigrationRule.INIT) {
|
||||
step = Enum.valueOf(MigrationStep.class, ConfigurationUtils.getDynamicProperty(DUBBO_SERVICEDISCOVERY_MIGRATION, step.name()));
|
||||
step = Enum.valueOf(MigrationStep.class, ConfigurationUtils.getCachedDynamicProperty(DUBBO_SERVICEDISCOVERY_MIGRATION, step.name()));
|
||||
} else {
|
||||
try {
|
||||
String serviceKey = consumerURL.getDisplayServiceKey();
|
||||
|
|
|
|||
Loading…
Reference in New Issue