Fix Spring Listener order (#12911)
This commit is contained in:
parent
4dbd31ebb1
commit
972a0814b9
|
|
@ -190,7 +190,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void unexport() {
|
||||
public synchronized void unexport() {
|
||||
if (!exported) {
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -335,6 +335,13 @@ public class DefaultModuleDeployer extends AbstractDeployer<ModuleModel> impleme
|
|||
|
||||
private void onModuleFailed(String msg, Throwable ex) {
|
||||
try {
|
||||
try {
|
||||
// un-export all services if start failure
|
||||
unexportServices();
|
||||
} catch (Throwable t) {
|
||||
logger.info("Failed to un-export services after module failed.", t);
|
||||
}
|
||||
|
||||
setFailed(ex);
|
||||
logger.error(CONFIG_FAILED_START_MODEL, "", "", "Model start failed: " + msg, ex);
|
||||
applicationDeployer.notifyModuleChanged(moduleModel, DeployState.FAILED);
|
||||
|
|
@ -450,8 +457,8 @@ public class DefaultModuleDeployer extends AbstractDeployer<ModuleModel> impleme
|
|||
try {
|
||||
configManager.removeConfig(sc);
|
||||
sc.unexport();
|
||||
} catch (Exception ignored) {
|
||||
// ignored
|
||||
} catch (Throwable t) {
|
||||
logger.info("Failed to un-export service. Service Key: " + sc.getUniqueServiceName(), t);
|
||||
}
|
||||
});
|
||||
exportedServices.clear();
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ public class DubboDeployApplicationListener implements ApplicationListener<Appli
|
|||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return HIGHEST_PRECEDENCE;
|
||||
return LOWEST_PRECEDENCE;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1015,16 +1015,19 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
|
|||
@Override
|
||||
public synchronized void unregister() {
|
||||
if (registered.compareAndSet(true, false)) {
|
||||
Registry registry = RegistryProtocol.this.getRegistry(getRegistryUrl(originInvoker));
|
||||
URL registryUrl = getRegistryUrl(originInvoker);
|
||||
Registry registry = RegistryProtocol.this.getRegistry(registryUrl);
|
||||
|
||||
ProviderModel providerModel = frameworkModel.getServiceRepository()
|
||||
.lookupExportedService(getRegisterUrl().getServiceKey());
|
||||
|
||||
List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();
|
||||
if (statedUrls.stream()
|
||||
.filter(u -> u.getRegistryUrl().equals(getRegisterUrl())
|
||||
&& u.getProviderUrl().getProtocol().equals(getRegisterUrl().getProtocol()))
|
||||
.anyMatch(ProviderModel.RegisterStatedURL::isRegistered)) {
|
||||
List<ProviderModel.RegisterStatedURL> statedURLs =
|
||||
providerModel.getStatedUrl()
|
||||
.stream()
|
||||
.filter(u -> u.getRegistryUrl().equals(registryUrl)
|
||||
&& u.getProviderUrl().getProtocol().equals(getRegisterUrl().getProtocol()))
|
||||
.collect(Collectors.toList());
|
||||
if (statedURLs.isEmpty() || statedURLs.stream().anyMatch(ProviderModel.RegisterStatedURL::isRegistered)) {
|
||||
try {
|
||||
registry.unregister(registerUrl);
|
||||
} catch (Throwable t) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue