refactor:let the configuration SDK context stand alone.

pull/1266/head
Haotian Zhang 1 year ago
parent 0892684e2c
commit e87a3b8723

@ -145,11 +145,16 @@ public class PolarisSDKContextManager {
} }
public static void innerConfigDestroy() { public static void innerConfigDestroy() {
if (Objects.nonNull(configSDKContext)) { try {
configSDKContext.destroy(); if (Objects.nonNull(configSDKContext)) {
configSDKContext = null; configSDKContext.destroy();
configSDKContext = null;
}
LOG.info("Polaris SDK config context is destroyed.");
}
catch (Throwable throwable) {
LOG.info("Polaris SDK config context is destroyed failed.", throwable);
} }
LOG.info("Polaris SDK config context is destroyed.");
} }
public void init() { public void init() {
@ -207,42 +212,15 @@ public class PolarisSDKContextManager {
initConfig(); initConfig();
} }
public void initConfig() { /**
// get modifiers for configuration. * Used for config data.
List<PolarisConfigModifier> configModifierList = new ArrayList<>(); */
for (PolarisConfigModifier modifier : modifierList) { public static void setConfigSDKContext(SDKContext context) {
if (modifier instanceof PolarisConfigurationConfigModifier) { if (configSDKContext == null) {
configModifierList.add(modifier); configSDKContext = context;
} // add shutdown hook
} Runtime.getRuntime().addShutdownHook(new Thread(PolarisSDKContextManager::innerConfigDestroy));
if (null == configSDKContext && CollectionUtils.isNotEmpty(configModifierList)) { LOG.info("create Polaris config SDK context successfully.");
try {
// init config SDKContext
configSDKContext = SDKContext.initContextByConfig(properties.configuration(configModifierList,
() -> environment.getProperty("spring.cloud.client.ip-address"),
() -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0)));
configSDKContext.init();
// add shutdown hook
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
long startTimestamp = System.currentTimeMillis();
long delay = 0;
while (true) {
if (delay >= 10000) {
innerConfigDestroy();
break;
}
else {
delay = System.currentTimeMillis() - startTimestamp;
}
}
}));
LOG.info("create Polaris config SDK context successfully. properties: {}, ", properties);
}
catch (Throwable throwable) {
LOG.error("create Polaris config SDK context failed. properties: {}, ", properties, throwable);
throw throwable;
}
} }
} }
@ -290,27 +268,30 @@ public class PolarisSDKContextManager {
return configSDKContext; return configSDKContext;
} }
/** public void initConfig() {
* Used for config data. // get modifiers for configuration.
*/ List<PolarisConfigModifier> configModifierList = new ArrayList<>();
public static void setConfigSDKContext(SDKContext context) { for (PolarisConfigModifier modifier : modifierList) {
if (configSDKContext == null) { if (modifier instanceof PolarisConfigurationConfigModifier) {
configSDKContext = context; configModifierList.add(modifier);
// add shutdown hook }
Runtime.getRuntime().addShutdownHook(new Thread(() -> { }
long startTimestamp = System.currentTimeMillis(); if (null == configSDKContext && CollectionUtils.isNotEmpty(configModifierList)) {
long delay = 0; try {
while (true) { // init config SDKContext
if (delay >= 10000) { configSDKContext = SDKContext.initContextByConfig(properties.configuration(configModifierList,
innerConfigDestroy(); () -> environment.getProperty("spring.cloud.client.ip-address"),
break; () -> environment.getProperty("spring.cloud.polaris.local-port", Integer.class, 0)));
} configSDKContext.init();
else {
delay = System.currentTimeMillis() - startTimestamp; // add shutdown hook
} Runtime.getRuntime().addShutdownHook(new Thread(PolarisSDKContextManager::innerConfigDestroy));
} LOG.info("create Polaris config SDK context successfully. properties: {}, ", properties);
})); }
LOG.info("create Polaris config SDK context successfully."); catch (Throwable throwable) {
LOG.error("create Polaris config SDK context failed. properties: {}, ", properties, throwable);
throw throwable;
}
} }
} }
} }

Loading…
Cancel
Save