You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/12/20 14:23:38 UTC
[dubbo] branch master updated: Fix netutils log endless recursive
(#5514)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 5931fa7 Fix netutils log endless recursive (#5514)
5931fa7 is described below
commit 5931fa7bd2eb3c9e6bdff3a720adfcaf36bcc976
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Dec 20 22:23:23 2019 +0800
Fix netutils log endless recursive (#5514)
* Fixes #4992, endless recursive call when NetUtils method fails.
* Fixes #4225
---
.../src/main/java/org/apache/dubbo/common/utils/NetUtils.java | 10 +++++++++-
.../src/main/java/org/apache/dubbo/config/AbstractConfig.java | 8 ++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
index e5057e8..5c3f9a5 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/NetUtils.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.config.ConfigurationUtils;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.logger.support.FailsafeLogger;
import java.io.IOException;
import java.net.Inet4Address;
@@ -45,7 +46,14 @@ import static org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;
* IP and Port Helper for RPC
*/
public class NetUtils {
- private static final Logger logger = LoggerFactory.getLogger(NetUtils.class);
+ private static Logger logger;
+
+ {
+ logger = LoggerFactory.getLogger(NetUtils.class);
+ if (logger instanceof FailsafeLogger) {
+ logger = ((FailsafeLogger) logger).getLogger();
+ }
+ }
// returned port range is [30000, 39999]
private static final int RND_PORT_START = 30000;
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
index c86183e..f7b5ef4 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
@@ -511,6 +511,14 @@ public abstract class AbstractConfig implements Serializable {
if (MethodUtils.isGetter(method)) {
String name = method.getName();
String key = calculateAttributeFromGetter(name);
+
+ try {
+ getClass().getDeclaredField(key);
+ } catch (NoSuchFieldException e) {
+ // ignore
+ continue;
+ }
+
Object value = method.invoke(this);
if (value != null) {
buf.append(" ");