From 58d5e519af824f7d08dfa5c68e0403546f1fba9f Mon Sep 17 00:00:00 2001 From: "ken.lj" Date: Thu, 9 Jul 2020 11:21:48 +0800 Subject: [PATCH] check invoker available status after proxy created. (#6435) --- .../org/apache/dubbo/config/ReferenceConfig.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index 570f7a49f0e..7bcc6eaca84 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -303,6 +303,8 @@ public synchronized void init() { initialized = true; + checkInvokerAvailable(); + // dispatch a ReferenceConfigInitializedEvent since 2.7.4 dispatch(new ReferenceConfigInitializedEvent(this, invoker)); } @@ -377,6 +379,14 @@ private T createProxy(Map map) { } } + if (logger.isInfoEnabled()) { + logger.info("Refer dubbo service " + interfaceClass.getName() + " from url " + invoker.getUrl()); + } + // create service proxy + return (T) PROXY_FACTORY.getProxy(invoker, ProtocolUtils.isGeneric(generic)); + } + + private void checkInvokerAvailable() throws IllegalStateException { if (shouldCheck() && !invoker.isAvailable()) { invoker.destroy(); throw new IllegalStateException("Failed to check the status of the service " @@ -390,11 +400,6 @@ private T createProxy(Map map) { + " to the consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion()); } - if (logger.isInfoEnabled()) { - logger.info("Refer dubbo service " + interfaceClass.getName() + " from url " + invoker.getUrl()); - } - // create service proxy - return (T) PROXY_FACTORY.getProxy(invoker, ProtocolUtils.isGeneric(generic)); } /**