1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00
This commit is contained in:
liuchunguang 2020-03-20 15:01:28 +08:00
parent 6ccdfab3cc
commit 2545e11c06

View File

@ -51,6 +51,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;
import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;
import static org.apache.dubbo.registry.Constants.ADMIN_PROTOCOL;
import static org.springframework.util.StringUtils.hasText;
@ -226,10 +227,11 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
// fix https://github.com/alibaba/spring-cloud-alibaba/issues/753
// Re-obtain the latest list of available metadata address here, ip or port may change.
// by https://github.com/wangzihaogithub
dubboMetadataConfigServiceProxy.removeProxy(serviceName);
repository.removeMetadataAndInitializedService(serviceName);
dubboGenericServiceFactory.destroy(serviceName);
repository.initializeMetadata(serviceName);
// When the last service provider is closed, fix 1259while close the channelwhen up a new provider then repository.initializeMetadata(serviceName) will throw Exception.
// dubboMetadataConfigServiceProxy.removeProxy(serviceName);
// repository.removeMetadataAndInitializedService(serviceName);
// dubboGenericServiceFactory.destroy(serviceName);
// repository.initializeMetadata(serviceName);
if (CollectionUtils.isEmpty(serviceInstances)) {
if (logger.isWarnEnabled()) {
logger.warn(
@ -237,6 +239,9 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
+ "available , please make sure the further impact",
serviceName, url.getServiceKey());
}
dubboMetadataConfigServiceProxy.removeProxy(serviceName);
repository.removeMetadataAndInitializedService(serviceName);
dubboGenericServiceFactory.destroy(serviceName);
/**
* URLs with {@link RegistryConstants#EMPTY_PROTOCOL}
*/
@ -299,7 +304,9 @@ public abstract class AbstractSpringCloudRegistry extends FailbackRegistry {
}
private List<URL> emptyURLs(URL url) {
return asList(from(url).setProtocol(EMPTY_PROTOCOL).build());
// issue : When the last service provider is closed, the client still periodically connects to the last provider.n
// fix https://github.com/alibaba/spring-cloud-alibaba/issues/1259
return asList(from(url).setProtocol(EMPTY_PROTOCOL).removeParameter(CATEGORY_KEY).build());
}
private List<ServiceInstance> getServiceInstances(String serviceName) {