From b929fc7d78107dbfc06f918304bc4afbbad3abc1 Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Fri, 27 Jul 2018 13:03:49 +0800 Subject: [PATCH 1/8] Not to accept foreign ip by default. --- .../org/apache/dubbo/qos/protocol/QosProtocolWrapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index 681f5224c72..62b3ee108fe 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -18,6 +18,7 @@ import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; +import org.apache.dubbo.qos.common.QosConstants; import org.apache.dubbo.qos.server.Server; import org.apache.dubbo.rpc.Exporter; import org.apache.dubbo.rpc.Invoker; @@ -81,8 +82,8 @@ private void startQosServer(URL url) { return; } - int port = Integer.parseInt(url.getParameter(QOS_PORT,"22222")); - boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"true")); + int port = url.getParameter(QOS_PORT, QosConstants.DEFAULT_PORT); + boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"false")); Server server = Server.getInstance(); server.setPort(port); server.setAcceptForeignIp(acceptForeignIp); From b2e065488383a34bbd153e17fb25f4705ea6b25d Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Fri, 27 Jul 2018 13:07:56 +0800 Subject: [PATCH 2/8] Log if fail to start qos server. #2046 --- .../org/apache/dubbo/qos/protocol/QosProtocolWrapper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index 62b3ee108fe..f2d91489adb 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -18,6 +18,8 @@ import org.apache.dubbo.common.Constants; import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.logger.Logger; +import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.qos.common.QosConstants; import org.apache.dubbo.qos.server.Server; import org.apache.dubbo.rpc.Exporter; @@ -32,6 +34,9 @@ import static org.apache.dubbo.common.Constants.QOS_PORT; public class QosProtocolWrapper implements Protocol { + + private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class); + private static AtomicBoolean hasStarted = new AtomicBoolean(false); private Protocol protocol; @@ -90,7 +95,7 @@ private void startQosServer(URL url) { server.start(); } catch (Throwable throwable) { - //throw new RpcException("fail to start qos server", throwable); + logger.warn("Fail to start qos server: ", throwable); } } From 071444eab1f54a58bcff02a99e9ee1a3825be844 Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Fri, 27 Jul 2018 13:12:31 +0800 Subject: [PATCH 3/8] Fix typo. No functional change. --- .../registry/integration/RegistryProtocol.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java index b1e4c3d349d..63744566ea2 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java @@ -136,26 +136,26 @@ public Exporter export(final Invoker originInvoker) throws RpcExceptio //registry provider final Registry registry = getRegistry(originInvoker); - final URL registedProviderUrl = getRegistedProviderUrl(originInvoker); + final URL registeredProviderUrl = getRegisteredProviderUrl(originInvoker); //to judge to delay publish whether or not - boolean register = registedProviderUrl.getParameter("register", true); + boolean register = registeredProviderUrl.getParameter("register", true); - ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registedProviderUrl); + ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registeredProviderUrl); if (register) { - register(registryUrl, registedProviderUrl); + register(registryUrl, registeredProviderUrl); ProviderConsumerRegTable.getProviderWrapper(originInvoker).setReg(true); } // Subscribe the override data // FIXME When the provider subscribes, it will affect the scene : a certain JVM exposes the service and call the same service. Because the subscribed is cached key with the name of the service, it causes the subscription information to cover. - final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registedProviderUrl); + final URL overrideSubscribeUrl = getSubscribedOverrideUrl(registeredProviderUrl); final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker); overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener); registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener); //Ensure that a new exporter instance is returned every time export - return new DestroyableExporter(exporter, originInvoker, overrideSubscribeUrl, registedProviderUrl); + return new DestroyableExporter(exporter, originInvoker, overrideSubscribeUrl, registeredProviderUrl); } @SuppressWarnings("unchecked") @@ -220,10 +220,10 @@ private URL getRegistryUrl(Invoker originInvoker) { * @param originInvoker * @return */ - private URL getRegistedProviderUrl(final Invoker originInvoker) { + private URL getRegisteredProviderUrl(final Invoker originInvoker) { URL providerUrl = getProviderUrl(originInvoker); //The address you see at the registry - final URL registedProviderUrl = providerUrl.removeParameters(getFilteredKeys(providerUrl)) + return providerUrl.removeParameters(getFilteredKeys(providerUrl)) .removeParameter(Constants.MONITOR_KEY) .removeParameter(Constants.BIND_IP_KEY) .removeParameter(Constants.BIND_PORT_KEY) @@ -232,7 +232,6 @@ private URL getRegistedProviderUrl(final Invoker originInvoker) { .removeParameter(ACCEPT_FOREIGN_IP) .removeParameter(VALIDATION_KEY) .removeParameter(INTERFACES); - return registedProviderUrl; } private URL getSubscribedOverrideUrl(URL registedProviderUrl) { From 7a4e3ec2eccf7ae0abb745f0ec85bc10dea4408a Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Fri, 27 Jul 2018 13:23:44 +0800 Subject: [PATCH 4/8] Remove redundant declaration. --- .../src/main/resources/META-INF/dubbo.xsd | 348 +++++++++--------- 1 file changed, 174 insertions(+), 174 deletions(-) diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd index adaa9369dfb..ecf7d7b7a5d 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd @@ -15,58 +15,58 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -81,82 +81,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169,49 +169,49 @@ - + - + - + - + - + - + - + - + - + @@ -223,86 +223,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -361,17 +361,17 @@ - + - + - + @@ -404,17 +404,17 @@ - + - + - + @@ -430,110 +430,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -544,42 +544,42 @@ - + - + - + - + - + - + - + - + @@ -597,7 +597,7 @@ - + @@ -616,54 +616,54 @@ - + - + - + - + - + - + - + - + - + - + @@ -674,17 +674,17 @@ - + - + - + @@ -698,32 +698,32 @@ - + - + - + - + - + - + @@ -750,22 +750,22 @@ - + - + - + - + @@ -784,168 +784,168 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -960,128 +960,128 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1110,28 +1110,28 @@ - + - + - + - + - + @@ -1147,7 +1147,7 @@ - + From 9ae9a34f003767d43b5be50e1195da9e56c0b6d7 Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Mon, 30 Jul 2018 15:31:49 +0800 Subject: [PATCH 5/8] Sync dubbo.xsd to compact dubbo.xsd. --- .../main/resources/META-INF/compat/dubbo.xsd | 353 +++++++++--------- 1 file changed, 179 insertions(+), 174 deletions(-) diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd index 30558cc7afe..6206048311b 100644 --- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd +++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd @@ -15,58 +15,58 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -81,82 +81,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -169,49 +169,49 @@ - + - + - + - + - + - + - + - + - + @@ -223,86 +223,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -361,17 +361,17 @@ - + - + - + @@ -404,17 +404,17 @@ - + - + - + @@ -430,110 +430,110 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -544,42 +544,42 @@ - + - + - + - + - + - + - + - + @@ -597,7 +597,7 @@ - + @@ -616,54 +616,54 @@ - + - + - + - + - + - + - + - + - + - + @@ -674,17 +674,17 @@ - + - + - + @@ -698,32 +698,32 @@ - + - + - + - + - + - + @@ -750,22 +750,22 @@ - + - + - + - + @@ -784,163 +784,168 @@ - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -955,128 +960,128 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1105,28 +1110,28 @@ - + - + - + - + - + @@ -1142,7 +1147,7 @@ - + @@ -1288,4 +1293,4 @@ - + \ No newline at end of file From 43b76dd1fd161b1ab6f66308e7e23eacd6a31977 Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Mon, 30 Jul 2018 15:33:51 +0800 Subject: [PATCH 6/8] Simplify code and add comments. --- .../main/java/org/apache/dubbo/config/ApplicationConfig.java | 3 +++ .../java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java index a3d46a0895f..86d40012dc8 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java @@ -71,10 +71,13 @@ public class ApplicationConfig extends AbstractConfig { // directory for saving thread dump private String dumpDirectory; + // whether to enable qos or not private Boolean qosEnable; + // the qos port to listen private Integer qosPort; + // should we accept foreign ip or not? private Boolean qosAcceptForeignIp; // customized parameters diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index f2d91489adb..b97657f196f 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -33,6 +33,7 @@ import static org.apache.dubbo.common.Constants.QOS_ENABLE; import static org.apache.dubbo.common.Constants.QOS_PORT; + public class QosProtocolWrapper implements Protocol { private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class); @@ -82,7 +83,7 @@ private void startQosServer(URL url) { } try { - boolean qosEnable = Boolean.parseBoolean(url.getParameter(QOS_ENABLE,"true")); + boolean qosEnable = url.getParameter(QOS_ENABLE,true); if (!qosEnable) { return; } From c7632dd593ca1b90c4264038233e3538e77cfb98 Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Mon, 30 Jul 2018 16:00:22 +0800 Subject: [PATCH 7/8] Add log message if qos is not enabled. --- .../java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java index b97657f196f..5c83ab06056 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/protocol/QosProtocolWrapper.java @@ -85,6 +85,9 @@ private void startQosServer(URL url) { try { boolean qosEnable = url.getParameter(QOS_ENABLE,true); if (!qosEnable) { + logger.info("qos won't be started because it is disabled. " + + "Please check dubbo.application.qos.enable is configured either in system property, " + + "dubbo.properties or XML/spring-boot configuration."); return; } From ea3006d45c344bcbbb520941f32456c1df683d6f Mon Sep 17 00:00:00 2001 From: Huxing Zhang Date: Mon, 30 Jul 2018 16:42:38 +0800 Subject: [PATCH 8/8] Fix UT failure. --- .../apache/dubbo/qos/protocol/QosProtocolWrapperTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java index d01df2de967..82f8b0b811d 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java +++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/protocol/QosProtocolWrapperTest.java @@ -26,9 +26,9 @@ public class QosProtocolWrapperTest { @Before public void setUp() throws Exception { - when(url.getParameter(Constants.QOS_ENABLE, "true")).thenReturn("true"); - when(url.getParameter(Constants.QOS_PORT, "22222")).thenReturn("12345"); - when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, "true")).thenReturn("false"); + when(url.getParameter(Constants.QOS_ENABLE, true)).thenReturn(true); + when(url.getParameter(Constants.QOS_PORT, 22222)).thenReturn(12345); + when(url.getParameter(Constants.ACCEPT_FOREIGN_IP, true)).thenReturn(false); when(invoker.getUrl()).thenReturn(url); when(url.getProtocol()).thenReturn(Constants.REGISTRY_PROTOCOL); }