[incubator-dubbo] branch 2.6.x updated: solve compatible issue with dubbo 2.5.9, 2.5.10 (#2175)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 69311ab solve compatible issue with dubbo 2.5.9, 2.5.10 (#2175) 69311ab is described below commit 69311abe3a84996ec6b1a38a381fd39f48bbfdf3 Author: jasonjoo2010 AuthorDate: Fri Aug 3 14:08:26 2018 +0800 solve compatible issue with dubbo 2.5.9, 2.5.10 (#2175) --- dubbo-common/src/main/java/com/alibaba/dubbo/common/Version.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/Version.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/Version.java index 2d9..a096835 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/Version.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/Version.java @@ -35,7 +35,7 @@ public final class Version { private static final Logger logger = LoggerFactory.getLogger(Version.class); // Dubbo RPC protocol version, for compatibility, it must not be between 2.0.10 ~ 2.6.2 -public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = "2.0.1"; +public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = "2.0.2"; // Dubbo implementation version, usually is jar version. private static final String VERSION = getVersion(Version.class, ""); @@ -43,7 +43,7 @@ public final class Version { * For protocol compatibility purpose. * Because {@link #isSupportResponseAttatchment} is checked for every call, int compare expect to has higher performance than string. */ -private static final int LOWEST_VERSION_FOR_RESPONSE_ATTATCHMENT = 20001; // 2.0.1 +private static final int LOWEST_VERSION_FOR_RESPONSE_ATTATCHMENT = 20002; // 2.0.2 private static final Map VERSION2INT = new HashMap(); static { @@ -202,4 +202,4 @@ public final class Version { } } -} \ No newline at end of file +}
[incubator-dubbo-website] branch asf-site updated: fix the default value of threads and payload in dubbo:provider and dubbo:protocol (#65)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new ecfffda fix the default value of threads and payload in dubbo:provider and dubbo:protocol (#65) ecfffda is described below commit ecfffda9c7a167e66162ffca25b7a0ba5756bac4 Author: shaoshuai AuthorDate: Fri Aug 3 15:33:25 2018 +0800 fix the default value of threads and payload in dubbo:provider and dubbo:protocol (#65) * fix the default value of threads and payload in dubbo:protocol fix the default value of threads to 200 fix the default value of payload to 8 * 1024 * 1024 = 8388608 (8M) --- docs/en-us/user/references/xml/dubbo-protocol.md | 4 ++-- docs/en-us/user/references/xml/dubbo-provider.md | 4 ++-- docs/zh-cn/user/references/xml/dubbo-protocol.md | 4 ++-- docs/zh-cn/user/references/xml/dubbo-provider.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/en-us/user/references/xml/dubbo-protocol.md b/docs/en-us/user/references/xml/dubbo-protocol.md index ba86533..b655502 100644 --- a/docs/en-us/user/references/xml/dubbo-protocol.md +++ b/docs/en-us/user/references/xml/dubbo-protocol.md @@ -53,10 +53,10 @@ Service provider protocol configuration. The corresponding class is `com.alibaba | port | port| int| False | The default port of dubbo protocol is 20880, rmi protocol is 1099, http and hessian protocol are 80;It will allocate the default port if `port` is not filled; It will allocate an unused port if `port` equals `-1`. To ensure the ports scope is controllable, the port will increase based on the corresponding protocol default port after Dubbo 2.4.0+ | Service discovery | Service port[...] | host | host| string | False | Find local IP automatically | Service discovery | The host name of services, to specify VIP and domain, or having multiple network cards. If null, it will find local IP automatically It's recommended to let Dubbo find local IP automatically | Above 2.0.5 | | threadpool| threadpool | string | False | fixed| Performance optimize | The type of Thread Pool, fixed/cached are available | Above 2.0.5 | -| threads | threads | int| False | 100 | Performance optimize | The size of the services' Thread Pool(Fixed) | Above 2.0.5 | +| threads | threads | int| False | 200 | Performance optimize | The size of the services' Thread Pool(Fixed) | Above 2.0.5 | | iothreads | threads | int| False | The count of CPU + 1 | Performance optimize | The size of io Thread Pool(Fixed)| Above 2.0.5 | | accepts | accepts | int| False | 0| Performance optimize | The maximum connection count of the service provider | Above 2.0.5 | -| payload | payload | int| False | 88388608(=8M)| Performance optimize | The length limit of request and response, unit is byte | Above 2.0.5 | +| payload | payload | int| False | 8388608(=8M)| Performance optimize | The length limit of request and response, unit is byte | Above 2.0.5 | | codec | codec | string | False | dubbo| Performance optimize | Protocol encoding| Above 2.0.5 | | serialization | serialization | string | False | The default serialization of dubbo protocol is hessian2, rmi protocol is java, http protocol is json | Performance optimize | Protocol serialization, It's used when a protocol has multiple serializations. For example, `dubbo` protocol has 4 serializations, they are `dubbo`, `hessian2`, `java` and `compactedjava`. | Above 2.0.5 | | accesslog | accesslog | string/boolean | False | | Service discovery | `true` will write access log to logger. Specifying it to a log path, you can write access logs to special log file. | Above 2.0.5 | diff --git a/docs/en-us/user/references/xml/dubbo-provider.md b/docs/en-us/user/references/xml/dubbo-provider.md index ad081b0..c90fff6 100644 --- a/docs/en-us/user/references/xml/dubbo-provider.md +++ b/docs/en-us/user/references/xml
[incubator-dubbo] branch master updated: add compatible class for config #2169 (#2170)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 5de6c76 add compatible class for config #2169 (#2170) 5de6c76 is described below commit 5de6c76f063195dabd037601c158c533d0356582 Author: Jerrick Zhu AuthorDate: Mon Aug 6 10:41:51 2018 +0800 add compatible class for config #2169 (#2170) --- dubbo-compatible/pom.xml | 6 + .../alibaba/dubbo/config/ApplicationConfig.java} | 51 +++--- .../com/alibaba/dubbo/config/ArgumentConfig.java} | 43 ++--- .../com/alibaba/dubbo/config/ConsumerConfig.java} | 43 ++--- .../com/alibaba/dubbo/config/MethodConfig.java}| 44 ++--- .../com/alibaba/dubbo/config/ModuleConfig.java}| 50 +++--- .../com/alibaba/dubbo/config/MonitorConfig.java} | 49 +++--- .../com/alibaba/dubbo/config/ProtocolConfig.java} | 18 +- .../com/alibaba/dubbo/config/ReferenceConfig.java} | 16 +- .../com/alibaba/dubbo/config/RegistryConfig.java} | 19 ++- .../com/alibaba/dubbo/config/ServiceConfig.java} | 16 +- .../dubbo/{compatible => }/cache/CacheTest.java| 2 +- .../dubbo/{compatible => }/cache/MyCache.java | 2 +- .../{compatible => }/cache/MyCacheFactory.java | 2 +- .../common/extension/ExtensionTest.java| 4 +- .../common/extension/MyExtensionFactory.java | 2 +- .../apache/dubbo/config/ApplicationConfigTest.java | 180 .../apache/dubbo/config/ArgumentConfigTest.java| 65 +++ .../java/org/apache/dubbo/config/ConfigTest.java | 56 ++ .../apache/dubbo/config/ConsumerConfigTest.java| 55 ++ .../org/apache/dubbo/config/MethodConfigTest.java | 184 .../org/apache/dubbo/config/ModuleConfigTest.java | 113 + .../apache/dubbo/config/ProtocolConfigTest.java| 157 + .../apache/dubbo/config/ProviderConfigTest.java| 187 + .../apache/dubbo/config/ReferenceConfigTest.java | 65 +++ .../apache/dubbo/config/RegistryConfigTest.java| 175 +++ .../{compatible => }/echo/EchoServiceTest.java | 7 +- .../dubbo/{compatible => }/filter/FilterTest.java | 5 +- .../dubbo/{compatible => }/filter/MyFilter.java| 2 +- .../dubbo/{compatible => }/filter/MyInvoker.java | 4 +- .../generic/GenericServiceTest.java| 7 +- .../serialization/MyObjectInput.java | 2 +- .../serialization/MyObjectOutput.java | 2 +- .../serialization/MySerialization.java | 2 +- .../serialization/SerializationTest.java | 2 +- .../{compatible => }/service/CustomArgument.java | 2 +- .../{compatible => }/service/DemoService.java | 2 +- .../{compatible => }/service/DemoServiceImpl.java | 2 +- .../{compatible => }/service/MockInvocation.java | 2 +- .../dubbo/{compatible => }/service/Person.java | 2 +- .../dubbo/{compatible => }/service/Type.java | 2 +- ...alibaba.dubbo.common.extension.ExtensionFactory | 2 +- 42 files changed, 1470 insertions(+), 181 deletions(-) diff --git a/dubbo-compatible/pom.xml b/dubbo-compatible/pom.xml index b99da06..1da947f 100644 --- a/dubbo-compatible/pom.xml +++ b/dubbo-compatible/pom.xml @@ -73,5 +73,11 @@ ${project.parent.version} test + +org.apache.dubbo +dubbo-registry-multicast +${project.parent.version} +test + \ No newline at end of file diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/compatible/service/Type.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java similarity index 75% copy from dubbo-compatible/src/test/java/org/apache/dubbo/compatible/service/Type.java copy to dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java index e6bcf4c..f17e7ed 100644 --- a/dubbo-compatible/src/test/java/org/apache/dubbo/compatible/service/Type.java +++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java @@ -1,21 +1,30 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR
[incubator-dubbo] branch master updated: fix name (#2189)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 940e355 fix name (#2189) 940e355 is described below commit 940e3553b0b94c1df23b79a2f523293251b20d6f Author: lichen <11263332+lllic...@users.noreply.github.com> AuthorDate: Mon Aug 6 14:19:57 2018 +0800 fix name (#2189) --- .../org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java index 085094d..52f5811 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java @@ -100,9 +100,9 @@ public abstract class AbstractDirectory implements Directory { // copy list routers = routers == null ? new ArrayList() : new ArrayList(routers); // append url router -String routerkey = url.getParameter(Constants.ROUTER_KEY); -if (routerkey != null && routerkey.length() > 0) { -RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getExtension(routerkey); +String routerKey = url.getParameter(Constants.ROUTER_KEY); +if (routerKey != null && routerKey.length() > 0) { +RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getExtension(routerKey); routers.add(routerFactory.getRouter(url)); } // append mock invoker selector
[incubator-dubbo] branch master updated: Judge null for key and value in attachment in RpcContextFilter. (#2171)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 895a4dd Judge null for key and value in attachment in RpcContextFilter. (#2171) 895a4dd is described below commit 895a4dd690f8190a972e9d4ae370bf5b1c8700c7 Author: 时无两丶 <442367...@qq.com> AuthorDate: Thu Aug 9 11:28:12 2018 +0800 Judge null for key and value in attachment in RpcContextFilter. (#2171) * Judge null for key and value in attachment in RpcContextFilter. If not, NullPointerException will be thrown in RpcContextFilter in some case. * optimize code --- .../dubbo/rpc/protocol/rest/RpcContextFilter.java | 25 +- .../dubbo/rpc/protocol/rest/RestProtocolTest.java | 21 ++ 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java index f585dc7..ae9e813 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java @@ -18,7 +18,6 @@ package org.apache.dubbo.rpc.protocol.rest; import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.rpc.RpcContext; - import org.jboss.resteasy.spi.ResteasyProviderFactory; import javax.annotation.Priority; @@ -70,19 +69,35 @@ public class RpcContextFilter implements ContainerRequestFilter, ClientRequestFi public void filter(ClientRequestContext requestContext) throws IOException { int size = 0; for (Map.Entry entry : RpcContext.getContext().getAttachments().entrySet()) { -if (entry.getValue().contains(",") || entry.getValue().contains("=") -|| entry.getKey().contains(",") || entry.getKey().contains("=")) { +String key = entry.getKey(); +String value = entry.getKey(); +if (illegalForRest(key) || illegalForRest(value)) { throw new IllegalArgumentException("The attachments of " + RpcContext.class.getSimpleName() + " must not contain ',' or '=' when using rest protocol"); } // TODO for now we don't consider the differences of encoding and server limit -size += entry.getValue().getBytes("UTF-8").length; +if (value != null) { +size += value.getBytes("UTF-8").length; +} if (size > MAX_HEADER_SIZE) { throw new IllegalArgumentException("The attachments of " + RpcContext.class.getSimpleName() + " is too big"); } -String attachments = entry.getKey() + "=" + entry.getValue(); +String attachments = key + "=" + value; requestContext.getHeaders().add(DUBBO_ATTACHMENT_HEADER, attachments); } } + +/** + * If a string value illegal for rest protocol(',' and '=' is illegal for rest protocol). + * + * @param v string value + * @return true for illegal + */ +private boolean illegalForRest(String v) { +if (StringUtils.isNotEmpty(v)) { +return v.contains(",") || v.contains("="); +} +return false; +} } diff --git a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/RestProtocolTest.java b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/RestProtocolTest.java index 671cdf5..a698d0c 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/RestProtocolTest.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/RestProtocolTest.java @@ -128,6 +128,27 @@ public class RestProtocolTest { exporter.unexport(); } +@Test +public void testRpcContextFilter() { +ServiceClassHolder.getInstance().pushServiceClass(DemoService.class); + +// use RpcContextFilter +URL nettyUrl = exportUrl.addParameter(Constants.SERVER_KEY, "netty") +.addParameter(Constants.EXTENSION_KEY, "org.apache.dubbo.rpc.protocol.rest.RpcContextFilter"); +Exporter exporter = protocol.export(proxy.getInvoker(new DemoService(), IDemoService.class, nettyUrl)); + +IDemoService demoService = this.proxy.getProxy(protocol.refer(IDemoService.class, nettyUrl)); + +String value = null; +// put a null value into attachment. +RpcContext.getContext().setAttachment("key", value); +Integer result =
[incubator-dubbo] branch master updated: 解析用户定义的URL时,当前太过粗暴,做下优雅调整 (#2077)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 547947a 解析用户定义的URL时,当前太过粗暴,做下优雅调整 (#2077) 547947a is described below commit 547947a85719ec11eb43ee23773349c5f30ace27 Author: 王虹凯 AuthorDate: Tue Aug 7 10:31:56 2018 +0800 解析用户定义的URL时,当前太过粗暴,做下优雅调整 (#2077) --- .../src/main/java/org/apache/dubbo/common/utils/UrlUtils.java | 11 --- .../test/java/org/apache/dubbo/common/utils/UrlUtilsTest.java | 6 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/UrlUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/UrlUtils.java index 408cac7..a7b3301 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/UrlUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/UrlUtils.java @@ -27,12 +27,17 @@ import java.util.Set; public class UrlUtils { +/** + * in the url string,mark the param begin + */ +private final static String URL_PARAM_STARTING_SYMBOL = "?"; + public static URL parseURL(String address, Map defaults) { if (address == null || address.length() == 0) { return null; } String url; -if (address.indexOf("://") >= 0) { +if (address.contains("://") || address.contains(URL_PARAM_STARTING_SYMBOL)) { url = address; } else { String[] addresses = Constants.COMMA_SPLIT_PATTERN.split(address); @@ -45,7 +50,7 @@ public class UrlUtils { } backup.append(addresses[i]); } -url += "?" + Constants.BACKUP_KEY + "=" + backup.toString(); +url += URL_PARAM_STARTING_SYMBOL + Constants.BACKUP_KEY + "=" + backup.toString(); } } String defaultProtocol = defaults == null ? null : defaults.get("protocol"); @@ -335,7 +340,7 @@ public class UrlUtils { version = service.substring(i + 1); service = service.substring(0, i); } -return URL.valueOf(Constants.EMPTY_PROTOCOL + "://0.0.0.0/" + service + "?" +return URL.valueOf(Constants.EMPTY_PROTOCOL + "://0.0.0.0/" + service + URL_PARAM_STARTING_SYMBOL + Constants.CATEGORY_KEY + "=" + category + (group == null ? "" : "&" + Constants.GROUP_KEY + "=" + group) + (version == null ? "" : "&" + Constants.VERSION_KEY + "=" + version)); diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/UrlUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/UrlUtilsTest.java index bdb2a9d..7141c96 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/UrlUtilsTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/UrlUtilsTest.java @@ -57,6 +57,12 @@ public class UrlUtilsTest { } @Test +public void testParseURLWithSpecial() { +String address = "127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183"; +assertEquals("dubbo://" + address,UrlUtils.parseURL(address, null).toString()); +} + +@Test public void testDefaultUrl() { String address = "127.0.0.1"; URL url = UrlUtils.parseURL(address, null);
[incubator-dubbo] branch master updated: deprecated unused method for Activate #2180 (#2193)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new e961c90 deprecated unused method for Activate #2180 (#2193) e961c90 is described below commit e961c9018299afe072fa380f65320d5bd812822c Author: Jerrick Zhu AuthorDate: Tue Aug 7 10:34:51 2018 +0800 deprecated unused method for Activate #2180 (#2193) --- .../src/main/java/com/alibaba/dubbo/common/extension/Activate.java| 2 ++ .../src/main/java/org/apache/dubbo/common/extension/Activate.java | 4 2 files changed, 6 insertions(+) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java index 02b78bc..9aecbce 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/extension/Activate.java @@ -35,8 +35,10 @@ public @interface Activate { String[] value() default {}; +@Deprecated String[] before() default {}; +@Deprecated String[] after() default {}; int order() default 0; diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java index 52e9305..ba1873e 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/Activate.java @@ -67,16 +67,20 @@ public @interface Activate { /** * Relative ordering info, optional + * Deprecated since 2.7.0 * * @return extension list which should be put before the current one */ +@Deprecated String[] before() default {}; /** * Relative ordering info, optional + * Deprecated since 2.7.0 * * @return extension list which should be put after the current one */ +@Deprecated String[] after() default {}; /**
[incubator-dubbo] branch 2.6.x updated: fix ut stable, #2227 (#2302)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 93d2eb6 fix ut stable, #2227 (#2302) 93d2eb6 is described below commit 93d2eb674b094ee4feee0ef1e46096098c5a22b4 Author: Jerrick Zhu AuthorDate: Wed Aug 15 20:46:38 2018 +0800 fix ut stable, #2227 (#2302) * fix ut, #2227 * add cache for travis ci * fix travis problem, skip javadoc --- .travis.yml | 9 - .../test/java/com/alibaba/dubbo/config/RegistryConfigTest.java | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 529e7ff..d928330 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,15 @@ jdk: - oraclejdk8 - openjdk7 +cache: + directories: + - '$HOME/.m2/repository' + +install: + - ./mvnw clean install -DskipTests=true -Dcheckstyle.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true + script: -- travis_wait 30 ./mvnw clean package +- travis_wait 30 ./mvnw test after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/dubbo-config/dubbo-config-api/src/test/java/com/alibaba/dubbo/config/RegistryConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/com/alibaba/dubbo/config/RegistryConfigTest.java index 1d9bbe2..086a4fa 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/com/alibaba/dubbo/config/RegistryConfigTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/com/alibaba/dubbo/config/RegistryConfigTest.java @@ -69,6 +69,7 @@ public class RegistryConfigTest { registry.setWait(10); assertThat(registry.getWait(), is(10)); assertThat(System.getProperty(Constants.SHUTDOWN_WAIT_KEY), equalTo("10")); +System.clearProperty(Constants.SHUTDOWN_WAIT_KEY); } @Test
[incubator-dubbo] branch 2.5.x updated: upgrade hessian_lite to 3.2.4 version (#2232)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.5.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.5.x by this push: new 84aa7d8 upgrade hessian_lite to 3.2.4 version (#2232) 84aa7d8 is described below commit 84aa7d8140498a58dae25b1098256923bf8ae520 Author: Xin Wang AuthorDate: Wed Aug 15 15:24:21 2018 +0800 upgrade hessian_lite to 3.2.4 version (#2232) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d0326f7..374dfdd 100644 --- a/pom.xml +++ b/pom.xml @@ -128,7 +128,7 @@ 1.1.7 2.1.4 4.5.3 -3.2.3 +3.2.4 1.4.1 1.2.31 3.1
[incubator-dubbo] branch master updated: [Dubbo-#2162]Correct the reference retries default value 0 to 2 (#2183)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new f2188d3 [Dubbo-#2162]Correct the reference retries default value 0 to 2 (#2183) f2188d3 is described below commit f2188d334cf2e91dbd62f84aeba025186738f4ea Author: tswstarplanet AuthorDate: Wed Aug 15 16:27:21 2018 +0800 [Dubbo-#2162]Correct the reference retries default value 0 to 2 (#2183) * Correct the reference retries default value 0 to 2 * fix the unit test error --- .../src/main/java/com/alibaba/dubbo/config/annotation/Reference.java | 2 +- .../src/main/java/org/apache/dubbo/config/annotation/Reference.java | 2 +- .../beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java index 450170a..4c1ca97 100644 --- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java +++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java @@ -75,7 +75,7 @@ public @interface Reference { String layer() default ""; -int retries() default 0; +int retries() default 2; String loadbalance() default ""; diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java index 3a2fe03..63e2cd5 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/annotation/Reference.java @@ -164,7 +164,7 @@ public @interface Reference { * * @see Constants#DEFAULT_RETRIES */ -int retries() default 0; +int retries() default 2; /** * Load balance strategy, legal values include: random, roundrobin, leastactive diff --git a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java index d5889fa..94148e6 100644 --- a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java +++ b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java @@ -113,7 +113,7 @@ public class AnnotationPropertyValuesAdapterTest { Assert.assertEquals("ondisconnect", referenceBean.getOndisconnect()); Assert.assertEquals("owner", referenceBean.getOwner()); Assert.assertEquals("layer", referenceBean.getLayer()); -Assert.assertEquals(Integer.valueOf(2), referenceBean.getRetries()); +Assert.assertEquals(Integer.valueOf(1), referenceBean.getRetries()); Assert.assertEquals("random", referenceBean.getLoadbalance()); Assert.assertEquals(true, referenceBean.isAsync()); Assert.assertEquals(Integer.valueOf(1), referenceBean.getActives()); @@ -147,7 +147,7 @@ public class AnnotationPropertyValuesAdapterTest { check = false, init = true, lazy = true, stubevent = true, reconnect = "reconnect", sticky = true, proxy = "javassist", stub = "stub", cluster = "failover", connections = 1, callbacks = 1, onconnect = "onconnect", -ondisconnect = "ondisconnect", owner = "owner", layer = "layer", retries = 2, +ondisconnect = "ondisconnect", owner = "owner", layer = "layer", retries = 1, loadbalance = "random", async = true, actives = 1, sent = true, mock = "mock", validation = "validation", timeout = 2, cache = "cache", filter = {"default", "default"}, listener = {"default", "default"}, parameters = {"key1", "value1"}, application = "application",
[incubator-dubbo] branch 2.6.x updated: fix retries to 2, #2162 (#2303)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 97124e9 fix retries to 2, #2162 (#2303) 97124e9 is described below commit 97124e91f4db33af52d51b095c546d60f87df344 Author: Jerrick Zhu AuthorDate: Wed Aug 15 21:27:02 2018 +0800 fix retries to 2, #2162 (#2303) --- .../src/main/java/com/alibaba/dubbo/config/annotation/Reference.java | 2 +- .../beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java index defdc9f..c043cb3 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java +++ b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/annotation/Reference.java @@ -78,7 +78,7 @@ public @interface Reference { String layer() default ""; -int retries() default 0; +int retries() default 2; String loadbalance() default ""; diff --git a/dubbo-config/dubbo-config-spring/src/test/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java b/dubbo-config/dubbo-config-spring/src/test/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java index 36def71..0eb969d 100644 --- a/dubbo-config/dubbo-config-spring/src/test/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java +++ b/dubbo-config/dubbo-config-spring/src/test/java/com/alibaba/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapterTest.java @@ -113,7 +113,7 @@ public class AnnotationPropertyValuesAdapterTest { Assert.assertEquals("ondisconnect", referenceBean.getOndisconnect()); Assert.assertEquals("owner", referenceBean.getOwner()); Assert.assertEquals("layer", referenceBean.getLayer()); -Assert.assertEquals(Integer.valueOf(2), referenceBean.getRetries()); +Assert.assertEquals(Integer.valueOf(1), referenceBean.getRetries()); Assert.assertEquals("random", referenceBean.getLoadbalance()); Assert.assertEquals(true, referenceBean.isAsync()); Assert.assertEquals(Integer.valueOf(1), referenceBean.getActives()); @@ -146,7 +146,7 @@ public class AnnotationPropertyValuesAdapterTest { check = false, init = true, lazy = true, stubevent = true, reconnect = "reconnect", sticky = true, proxy = "javassist", stub = "stub", cluster = "failover", connections = 1, callbacks = 1, onconnect = "onconnect", -ondisconnect = "ondisconnect", owner = "owner", layer = "layer", retries = 2, +ondisconnect = "ondisconnect", owner = "owner", layer = "layer", retries = 1, loadbalance = "random", async = true, actives = 1, sent = true, mock = "mock", validation = "validation", timeout = 2, cache = "cache", filter = {"default", "default"}, listener = {"default", "default"}, parameters = {"key1", "value1"}, application = "application",
[incubator-dubbo] branch master updated: remote dubbo-all javadoc plugin (#2307)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 3a267f8 remote dubbo-all javadoc plugin (#2307) 3a267f8 is described below commit 3a267f86b47f93860754d4b1dc6f95db251c4d0a Author: Jerrick Zhu AuthorDate: Thu Aug 16 13:03:04 2018 +0800 remote dubbo-all javadoc plugin (#2307) * remote dubbo-all javadoc plugin * add license to test source * disable checkstyle and rat plugin --- .travis.yml| 16 ++-- dubbo-all/pom.xml | 29 -- .../src/test/resources/applicationContext.xml | 16 .../test/resources/webapps/test/WEB-INF/web.xml| 16 .../test/resources/webapps/test2/WEB-INF/web.xml | 16 .../test/resources/webapps/test3/WEB-INF/web.xml | 16 dubbo-metrics/dubbo-metrics-api/pom.xml| 17 - .../apache/dubbo/metrics/MetricManagerTest.java| 19 +++--- .../org/apache/dubbo/metrics/MetricNameTest.java | 19 +++--- .../command/decoder/HttpCommandDecoderTest.java| 16 .../command/decoder/TelnetCommandDecoderTest.java | 16 .../apache/dubbo/qos/command/impl/HelpTest.java| 16 .../org/apache/dubbo/qos/command/impl/LsTest.java | 16 .../apache/dubbo/qos/command/impl/OfflineTest.java | 16 .../apache/dubbo/qos/command/impl/OnlineTest.java | 16 .../apache/dubbo/qos/command/impl/QuitTest.java| 16 .../qos/command/impl/TestRegistryFactory.java | 16 .../dubbo/qos/command/util/CommandHelperTest.java | 16 .../dubbo/qos/protocol/QosProtocolWrapperTest.java | 16 .../qos/server/handler/HttpProcessHandlerTest.java | 16 .../server/handler/LocalHostPermitHandlerTest.java | 16 .../qos/server/handler/QosProcessHandlerTest.java | 16 .../server/handler/TelnetProcessHandlerTest.java | 16 .../java/org/apache/dubbo/rpc/RpcContextTest.java | 16 .../dubbo/rpc/filter/ClassLoaderFilterTest.java| 17 + .../apache/dubbo/rpc/proxy/AbstractProxyTest.java | 17 + .../dubbo/rpc/proxy/jdk/JdkProxyFactoryTest.java | 16 .../apache/dubbo/rpc/support/LocalException.java | 17 + 28 files changed, 427 insertions(+), 44 deletions(-) diff --git a/.travis.yml b/.travis.yml index 970851f..3e5e249 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,19 +2,19 @@ language: java sudo: false # faster builds jdk: -- oraclejdk10 -- oraclejdk9 -- oraclejdk8 + - oraclejdk10 + - oraclejdk9 + - oraclejdk8 cache: directories: - - '$HOME/.m2/repository' +- '$HOME/.m2/repository' - install: - - ./mvnw clean install -DskipTests=true -Dcheckstyle.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true +install: + - ./mvnw clean install -DskipTests=true -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true - script: -- travis_wait 30 ./mvnw test +script: + - travis_wait 30 ./mvnw test after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/dubbo-all/pom.xml b/dubbo-all/pom.xml index a9febb5..7a1cdd3 100644 --- a/dubbo-all/pom.xml +++ b/dubbo-all/pom.xml @@ -554,35 +554,6 @@ - -maven-javadoc-plugin -${maven_javadoc_version} - - -attach-javadoc - -jar - - -none - - - - -true - - org.apache.dubbo:dubbo-* - com.alibaba:hessian-* - -public -UTF-8 -UTF-8 -UTF-8 - -http://docs.oracle.com/javase/7/docs/api - - - \ No newline at end of file diff --git a/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml b/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml index 977a8a4..5c9f657 100644 --- a/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml +++ b/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml @@ -1,4 +1,20 @@ + http://www.springframework.org/schema/beans; xmlns:xsi="http://www.w3.org/2001/XMLSchema-
[incubator-dubbo] branch 2.5.x updated: fix subscription when enable monitor (#2111)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.5.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.5.x by this push: new 9362181 fix subscription when enable monitor (#2111) 9362181 is described below commit 9362181d1285fe89d345ebf92ec4186353f1fd02 Author: jasonjoo2010 AuthorDate: Thu Aug 16 15:37:46 2018 +0800 fix subscription when enable monitor (#2111) --- .../com/alibaba/dubbo/config/AbstractInterfaceConfig.java | 11 +++ 1 file changed, 11 insertions(+) diff --git a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/AbstractInterfaceConfig.java index 6fbed0a..45a9ab3 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/AbstractInterfaceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/AbstractInterfaceConfig.java @@ -36,6 +36,8 @@ import com.alibaba.dubbo.rpc.ProxyFactory; import com.alibaba.dubbo.rpc.cluster.Cluster; import com.alibaba.dubbo.rpc.support.MockInvoker; +import static com.alibaba.dubbo.common.utils.NetUtils.isInvalidLocalHost; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -226,7 +228,16 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig { if (ConfigUtils.getPid() > 0) { map.put(Constants.PID_KEY, String.valueOf(ConfigUtils.getPid())); } +//set ip +String hostToRegistry = ConfigUtils.getSystemProperty(Constants.DUBBO_IP_TO_REGISTRY); +if (hostToRegistry == null || hostToRegistry.length() == 0) { +hostToRegistry = NetUtils.getLocalHost(); +} else if (isInvalidLocalHost(hostToRegistry)) { +throw new IllegalArgumentException("Specified invalid registry ip from property:" + Constants.DUBBO_IP_TO_REGISTRY + ", value:" + hostToRegistry); +} +map.put(Constants.REGISTER_IP_KEY, hostToRegistry); appendParameters(map, monitor); +appendParameters(map, application); String address = monitor.getAddress(); String sysaddress = System.getProperty("dubbo.monitor.address"); if (sysaddress != null && sysaddress.length() > 0) {
[incubator-dubbo] branch master updated: Qos enhancement (#2153)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 7277f5e Qos enhancement (#2153) 7277f5e is described below commit 7277f5ed1826e3ff926e483af466c9bef16898e2 Author: Huxing Zhang AuthorDate: Thu Aug 16 16:55:52 2018 +0800 Qos enhancement (#2153) * Not to accept foreign ip by default. * Log if fail to start qos server. #2046 * Fix typo. No functional change. * Remove redundant declaration. * Sync dubbo.xsd to compact dubbo.xsd. * Simplify code and add comments. * Add log message if qos is not enabled. * Fix UT failure. --- .../org/apache/dubbo/config/ApplicationConfig.java | 3 + .../src/main/resources/META-INF/compat/dubbo.xsd | 353 +++-- .../src/main/resources/META-INF/dubbo.xsd | 348 ++-- .../dubbo/qos/protocol/QosProtocolWrapper.java | 18 +- .../dubbo/qos/protocol/QosProtocolWrapperTest.java | 6 +- .../registry/integration/RegistryProtocol.java | 17 +- 6 files changed, 381 insertions(+), 364 deletions(-) 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 a3d46a0..86d4001 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-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 30558cc..6206048 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
[incubator-dubbo] branch master updated (7277f5e -> 8879afa)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. from 7277f5e Qos enhancement (#2153) add 8879afa Increase availability, make @Adaptive try default extension when the specified one couldn't be found. (#2159) No new revisions were added by this update. Summary of changes: .../org/apache/dubbo/common/extension/ExtensionLoader.java | 12 +--- 1 file changed, 9 insertions(+), 3 deletions(-)
[incubator-dubbo-website] branch asf-site updated: docs: Team9 - Add En-Us Docs and modify Zh-Cn Docs for Loadbalancing (#90)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new fe501b5 docs: Team9 - Add En-Us Docs and modify Zh-Cn Docs for Loadbalancing (#90) fe501b5 is described below commit fe501b519afb36bc19ca802ed256815ae27b9e4d Author: Symphony AuthorDate: Tue Aug 14 17:15:24 2018 +0800 docs: Team9 - Add En-Us Docs and modify Zh-Cn Docs for Loadbalancing (#90) * docs: Add En-Us Docs and modify zh-cn Docs for Loadbalancing * docs: Add En-Us Docs and modify zh-cn Docs for Loadbalancing * docs: modify blog.js metadata * update author and title * docs: add co-author --- blog/en-us/dubbo-loadbalance.md | 269 blog/zh-cn/dubbo-loadbalance.md | 78 ++-- site_config/blog.js | 7 ++ 3 files changed, 315 insertions(+), 39 deletions(-) diff --git a/blog/en-us/dubbo-loadbalance.md b/blog/en-us/dubbo-loadbalance.md new file mode 100644 index 000..9501680 --- /dev/null +++ b/blog/en-us/dubbo-loadbalance.md @@ -0,0 +1,269 @@ + + +# Dubbo's Load Balance + + + +## Background + +Dubbo is a distributed service framework that avoids single point of failure and horizontal expansion of support services. A service typically deploys multiple instances. How to select a call from a cluster of multiple service providers involves a load balancing strategy. + +## Concepts + +Before discussing load balancing, I will explain these three concepts first. + +1. Load Balancing +2. Fault-tolerant Cluster +3. Service Route + +These three concepts are confusing. They all describe how to choose from multiple Providers to make calls. So what is the difference between them? Let me give a simple example and explain these concepts clearly. + +There is a Dubbo user service, 10 deployed in Beijing and 20 deployed in Shanghai. A service consumer in Hangzhou initiated a call and then the following steps executed: + +1. According to the configured routing rule, if the call is initiated by Hangzhou, it will be routed to the nearest 20 Providers in Shanghai. +2. According to the configured random load balancing strategy, one of the 20 Providers is randomly selected to be called, assuming that the 7th Provider is randomly selected. +3. As a result, calling the 7th Provider failed. +4. Retried other servers according to the configured Fault-tolerant Cluster mode. +5. The call to the 13th Provider was successful. + +Steps 1, 2, and 4 above correspond to routing, load balancing, and fault-tolerant cluster. In Dubbo, a subset is selected by routing from multiple Providers according to routing rules, then a Provider selected from the subset according to load balancing to make this call. If the call fails, Dubbo retry or schedule retransmission or fail-fast according to the Fault-tolerant Cluster policy. You can see the routes in Dubbo, load balancing and Fault-tolerant Cluster exectute at different sta [...] + +## Dubbo's Internal Load Balancing Strategy + +Dubbo has four Internal Load Balancing Strategies: + +1. RandomLoadBalance: Random load balancing. Choose a Provider randomly. It is Dubbo's default load balancing strategy. +2. Round Robin Load Balancing: Polling load balancing, then chooses one Provider. +3. LeastActiveLoadBalance: The minimum number of active calls, the random number of the same active number. The active number refers to the difference before and after the call. Make slow providers receive fewer requests, because the slower Provider before and after the difference of calls will be larger. +4. ConsistentHashLoadBalance: Consistent hash load balancing. Requests with the same parameters always fall on the same machine. + +### 1. Random Load Balancing + +As the name implies, the random load balancing strategy is to select one from multiple Providers randomly. However, random load balancing in Dubbo has a weighting concept that sets the random probability according to the weight. For example, there are 10 Providers, it's not to say that the probability of each Provider is the same, but to assign the probability by combining the weights of these 10 providers. + +In Dubbo, you can set weights on the Provider. For example, if the performance of the machine is better, you can set a larger weight. If the performance is poorer, you can set a smaller weight. Weights have an impact on load balancing. The weight of provider can be set in Dubbo Admin. + + Weight-based Load Balancing Algorithm + +The stochastic strategy will determine whether the weights of all the invokers are the same at first. If they are all the same, then the processing is relatively simple. Using `random.nexInt(length)`, you can randomly generate an invoker serial number, and select the corresponding invoker according
[incubator-dubbo-website] branch asf-site updated: Translate blog/spring-boot-dubbo-start-stop-analysis.md to English from Chinese
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new dee0b96 Translate blog/spring-boot-dubbo-start-stop-analysis.md to English from Chinese dee0b96 is described below commit dee0b96325df07d0e631a8c2790b77b89245f6f6 Author: Noah Gao AuthorDate: Wed Aug 15 10:46:54 2018 +0800 Translate blog/spring-boot-dubbo-start-stop-analysis.md to English from Chinese * Initial commit of translation spring-boot-dubbo-start-stop-analysis.md * fix spring-boot-dubbo-start-stop-analysis.md(zh-cn) problem --- .../en-us/spring-boot-dubbo-start-stop-analysis.md | 223 ++ .../zh-cn/spring-boot-dubbo-start-stop-analysis.md | 4 +- en-us/blog/dubbo-loadbalance.html | 258 + en-us/blog/dubbo-loadbalance.json | 4 + en-us/blog/index.html | 2 +- .../blog/introduction-to-dubbo-qos.html| 138 +-- en-us/blog/introduction-to-dubbo-qos.json | 4 + .../spring-boot-dubbo-start-stop-analysis.html | 145 ++-- .../spring-boot-dubbo-start-stop-analysis.json | 4 + site_config/blog.js| 9 +- zh-cn/blog/dubbo-loadbalance.html | 80 +++ zh-cn/blog/dubbo-loadbalance.json | 2 +- zh-cn/blog/introduction-to-dubbo-qos.html | 6 +- zh-cn/blog/introduction-to-dubbo-qos.json | 2 +- .../spring-boot-dubbo-start-stop-analysis.html | 4 +- .../spring-boot-dubbo-start-stop-analysis.json | 2 +- 16 files changed, 692 insertions(+), 195 deletions(-) diff --git a/blog/en-us/spring-boot-dubbo-start-stop-analysis.md b/blog/en-us/spring-boot-dubbo-start-stop-analysis.md new file mode 100644 index 000..27a6c77 --- /dev/null +++ b/blog/en-us/spring-boot-dubbo-start-stop-analysis.md @@ -0,0 +1,223 @@ +# Source code analysis of spring-boot+Dubbo App start and stop + +### Introduction + +[Dubbo Spring Boot](https://github.com/apache/incubator-dubbo-spring-boot-project) project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application. It also integrates the feature of Spring Boot: + +- [Autoconfigure](https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-spring-boot-autoconfigure) (ex: Annotation driver, Autoconfigure, etc.) +- [Production-Ready](https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/dubbo-spring-boot-actuator) (ex: Security, Healthy check, Externalize configuration, etc.) + +### The analysis of DubboConsumer startup + +Have you ever thought about this : since the `DubboConsumerDemo` application in `incubator-dubbo-spring-boot-project` has only one line of code, why not just exit directly when the `main` method is executed? + +```java +@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller") +public class DubboConsumerDemo { + +public static void main(String[] args) { +SpringApplication.run(DubboConsumerDemo.class,args); +} + +} +``` + +In fact, to answer this question, we need to abstract it first, that is, under what circumstances will a JVM process exit? + +Take Java 8 as an example. By referring to the JVM language specification[1], there is a clear description in Section 12.8: + +> A program terminates all its activity and *exits* when one of two things happens: +> +> - All the threads that are not daemon threads terminate. +> - Some thread invokes the `exit` method of class `Runtime` or class `System`, and the `exit` operation is not forbidden by the security manager. + +Therefore, in view of the above situation, we judge that there must be some non-daemon thread not exiting. All thread information can be seen by `jstack`, including whether they are daemon threads, and `jstack` can be used to find out which threads are non-daemon. + +```sh +➜ jstack 57785 | grep tid | grep -v "daemon" +"container-0" #37 prio=5 os_prio=31 tid=0x7fbe312f5800 nid=0x7103 waiting on condition [0x700010144000] +"container-1" #49 prio=5 os_prio=31 tid=0x7fbe3117f800 nid=0x7b03 waiting on condition [0x700010859000] +"DestroyJavaVM" #83 prio=5 os_prio=31 tid=0x7fbe30011000 nid=0x2703 waiting on condition [0x] +"VM Thread" os_prio=31 tid=0x7fbe3005e800 nid=0x3703 runnable +"GC Thread#0" os_prio=31 tid=0x7fbe30013800 nid=0x5403 runnable +"GC Thread#1" os_prio=31 tid=0x7fbe30021000 nid=0x5303 runnable +"GC Thread#2" os_prio=31 tid=0x7fbe30021800 nid=0x2d03 runnable +"GC Thread#3" os_prio=31 tid=0x7fbe30022000 nid=0x2f03 runnable +"
[incubator-dubbo-website] branch asf-site updated: Translate blog/Prepare-an-Apache-release.md
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 686b6d4 Translate blog/Prepare-an-Apache-release.md 686b6d4 is described below commit 686b6d42c4b05f3c4b10a8202e301676c500170f Author: smilechenjia <35399210+smilechen...@users.noreply.github.com> AuthorDate: Wed Aug 15 11:00:40 2018 +0800 Translate blog/Prepare-an-Apache-release.md * add en-us prepare-an-apache-release.md --- .../prepare-an-apache-release.md} | 119 +++-- ...che-release.md => prepare-an-apache-release.md} | 2 +- 2 files changed, 62 insertions(+), 59 deletions(-) diff --git a/blog/zh-cn/Prepare-an-Apache-release.md b/blog/en-us/prepare-an-apache-release.md similarity index 54% copy from blog/zh-cn/Prepare-an-Apache-release.md copy to blog/en-us/prepare-an-apache-release.md index e6223fb..9ef68b8 100644 --- a/blog/zh-cn/Prepare-an-Apache-release.md +++ b/blog/en-us/prepare-an-apache-release.md @@ -1,29 +1,29 @@ -## 理解Apache发布的内容和流程 +## Understanding the Apache Release Cycle -总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。 +In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository. -请参考以下链接,找到更多关于ASF的发布指南: +Please refer to the following links for more information on ASF's release guide: - [Apache Release Guide](http://www.apache.org/dev/release-publishing) - [Apache Release Policy](http://www.apache.org/dev/release.html) - [Maven Release Info](http://www.apache.org/dev/publishing-maven-artifacts.html) -## 本地构建环境准备 +## Preparation of Local Building Environment -主要包括签名工具、Maven仓库认证相关准备 +Mainly including the related preparation of signature utilities and Maven repository certification -1. 安装GPG,参见 https://www.gnupg.org/download/index.html +1. Install GPG,refer to https://www.gnupg.org/download/index.html - - 如Mac OS + - For example, in Mac OS ```sh $ brew install gpg -$ gpg --version #检查版本,应该为2.x +$ gpg --version #check version,should be 2.x ``` -2. 用gpg生成key +2. Generate the key with GPG - - 根据提示,生成key + - Generate the key according to the prompt ```shell $ gpg2 --full-gen-key @@ -59,23 +59,23 @@ "Robert Burrell Donkin (CODE SIGNING KEY) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O -You need a Passphrase to protect your secret key. # 填入密码,以后打包过程中会经常用到 +You need a Passphrase to protect your secret key. # enter the password, which will be used frequently when packaging. ``` - - 查看key id + - View key id ```sh $ gpg --list-keys -pub rsa4096/28681CB1 2018-04-26 # 28681CB1就是key id +pub rsa4096/28681CB1 2018-04-26 # 28681CB1 is the key id uid [ultimate] liujun (apache-dubbo) sub rsa4096/D3D6984B 2018-04-26 -# 通过key id发送public key到keyserver +# send public key to keyserver via key id $ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1 -# 其中,pgpkeys.mit.edu为随意挑选的keyserver,keyserver列表为:https://sks-keyservers.net/status/,因为相互之间是自动同步的,选任意一个都可以。 +# Here pgpkeys.mit.edu is a random selection of keyserver. Any key server from the list https://sks-keyservers.net/status/ is acceptable because they are automatically synchronized. ``` - - 如果有多个public key,设置默认key + - If there are multiple public keys,set the default key ~/.gnupg/gpg.conf @@ -86,9 +86,9 @@ default-key 28681CB1 ``` -3. 设置Apache中央仓库 +3. Set up Apache central repository. - - Dubbo项目的父pom为apache pom + - The parent pom of Dubbo project is apache pom ```xml @@ -98,9 +98,10 @@ ``` - - 添加以下内容到.m2/settings.xml + - Add the following contents to .m2/settings.xml - 所有密码请使用[maven-encryption-plugin](http://maven.apache.org/guides/mini/guide-encryption.html)加密后再填入 + Enter the passwords after + encrypting by [maven-encryption-plugin](http://maven.apache.org/guides/mini/guide-encryption.html) ```xml @@ -128,90 +129,92 @@ ``` - -## 打包&上传 +## Pack & Upload -1. 从主干分支拉取新分支作为发布分支,如现在要发布2.6.4版本,则从2.6.x拉出新分支2.6.4-release,此后2.6.4 Release Candidates涉及的修改及打标签等都在2.6.4-release分支进行,最终发布完成后合入主干分支。 +1. Pull the new branch from the master branch as the release branch. If you want to release the 2.6.4 version now, pull the new branch 2.6.4-release from 2.6.x. Then the +modifications and taggings related to 2.6.4 Release Candidates are applied to 2.6.4-release branch, and is merged into the master branch after the final release. -2. 首先,在2.6.4-release分支验证maven组件打包、source源码打包、签名等是否都正常
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 736de98 build site 736de98 is described below commit 736de98443af8ce5671d02155d4c172c14a67ad1 Author: zhuyong AuthorDate: Wed Aug 15 10:49:28 2018 +0800 build site --- build/blog.js | 6 +++--- build/blogDetail.js| 6 +++--- build/community.js | 6 +++--- build/documentation.js | 6 +++--- build/home.js | 6 +++--- en-us/blog/index.html | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/build/blog.js b/build/blog.js index adf9bbe..ffc8ba8 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] - Copyright (c) 2016 Jed Watson. +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t - 中中https://f.alicdn.com/react/15.4.1/react-with-addons.min.js;> https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;>
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new efb272f build site efb272f is described below commit efb272f27e94de7cf8e347dac7d282c287e91090 Author: zhuyong AuthorDate: Wed Aug 15 11:08:01 2018 +0800 build site --- build/blog.js | 4 +- en-us/blog/index.html | 2 +- .../blog/prepare-an-apache-release.html| 127 +++-- en-us/blog/prepare-an-apache-release.json | 4 + site_config/blog.js| 9 +- zh-cn/blog/Prepare-an-Apache-release.html | 10 +- zh-cn/blog/Prepare-an-Apache-release.json | 4 +- zh-cn/blog/index.html | 2 +- 8 files changed, 88 insertions(+), 74 deletions(-) diff --git a/build/blog.js b/build/blog.js index ffc8ba8..f369f7d 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t - 中中https://f.alicdn.com/react/15.4.1/react-with-addons.min.js;> https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;> diff --git a/zh-cn/blog/Prepare-an-Apache-release.html b/en-us/blog/prepare-an-apache-release.html similarity index 60% copy from zh-cn/blog/Prepare-an-Apache-release.html copy to en-us/blog/prepare-an-apache-release.html index 0a5d55f..fa74526 100644 --- a/zh-cn/blog/Prepare-an-Apache-release.html +++ b/en-us/blog/prepare-an-apache-release.html @@ -4,38 +4,38 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - <meta name="keywords" content="Prepare-an-Apache-release" /> - <meta name="description" content="Prepare-an-Apache-release" /> + <meta name="keywords" content="prepare-an-apache-release" /> + <meta name="description" content="prepare-an-apache-release" /> <!-- 网页标签标题 --> - <title>Prepare-an-Apache-release</title> + <title>prepare-an-apache-release</title> <link rel="shortcut icon" href="/img/dubbo.ico"/> <link rel="stylesheet" href="/build/blogDetail.css" /> </head> <body> - <div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="855852892"><header class="header-container header-container-normal" data-reactid="2"><div class="header-body" data-reactid="3"><a href="/zh-cn/index.html" data-reactid="4"><img class="logo" src="/img/dubbo_colorful.png" data-reactid="5"/></a><span class="language-switch language-switch-normal" data-reactid="6">En</span><div class="header-menu" data-reactid="7"><img class="header-menu-tog [...] -<p>总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。</p> -<p>请参考以下链接,找到更多关于ASF的发布指南:</p> + <div id="root"><div class="blog-detail-page" data-reactroot="" data-reactid="1" data-react-checksum="-1692158055"><header c
[incubator-dubbo-website] branch asf-site updated: rebuild
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 43c1c67 rebuild 43c1c67 is described below commit 43c1c67fd5bb53e013c56c9358fa9a2c5fb203c8 Author: zhuyong AuthorDate: Wed Aug 15 11:14:33 2018 +0800 rebuild --- .../{Prepare-an-Apache-release.html => prepare-an-apache-release.html}| 0 .../{Prepare-an-Apache-release.json => prepare-an-apache-release.json}| 0 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/zh-cn/blog/Prepare-an-Apache-release.html b/zh-cn/blog/prepare-an-apache-release.html similarity index 100% rename from zh-cn/blog/Prepare-an-Apache-release.html rename to zh-cn/blog/prepare-an-apache-release.html diff --git a/zh-cn/blog/Prepare-an-Apache-release.json b/zh-cn/blog/prepare-an-apache-release.json similarity index 100% rename from zh-cn/blog/Prepare-an-Apache-release.json rename to zh-cn/blog/prepare-an-apache-release.json
[incubator-dubbo-website] branch asf-site updated: Add documents to issue#1713_team 5 (#104)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 7ea68ae Add documents to issue#1713_team 5 (#104) 7ea68ae is described below commit 7ea68ae49a4ec6ac4bf3367b32a3001216a631c3 Author: Ziyang AuthorDate: Wed Aug 15 11:28:17 2018 +0800 Add documents to issue#1713_team 5 (#104) * add dubbo-basic-usage-dubbo-provider-configuration.md --- ...bbo-basic-usage-dubbo-provider-configuration.md | 282 + ...bbo-basic-usage-dubbo-provider-configuration.md | 5 +- 2 files changed, 285 insertions(+), 2 deletions(-) diff --git a/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md new file mode 100644 index 000..f9f59e0 --- /dev/null +++ b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md @@ -0,0 +1,282 @@ +Dubbo Basic Usage-Dubbo Provider Configuration +--- + +# Dubbo Basic Usage + +This chapter mainly talking about how to configure dubbo. According to the configuration mode, it can be divided into the following mode: XML Configuration, Properties Configuration, Annotation Configuration, API Invocation Mode Configuration. And according to the function, we can divide them into Dubbo Provider and Dubbo Consumer. In the following sections, we would explain Dubbo Provider and Dubbo Consumer respectively. + +## Dubbo Provider Configuration + +### Provider Configuration in Detail + +The configuration mode of Dubbo Provider has 4 different ways: XML Configuration, Properties Configuration, API Invocation Mode Configuration and Annotation Configuration. + + XML Configuration + +## The simplest configuration example: +``` + +http://www.springframework.org/schema/beans; +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance; +xmlns:dubbo="http://dubbo.apache.org/schema/dubbo; +xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd;> + + + + + + +``` +In the example above,note the way to write dubbo schema: +``` +http://www.w3.org/2001/XMLSchema-instance; + xmlns:dubbo="http://code.alibabatech.com/schema/dubbo; + xmlns="http://www.springframework.org/schema/beans; + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd + http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd;> +``` + +## Supported Configuration Tags + +| Tags | Application | Describe | +| | - | : | +| dubbo:service/ | Service Configuration | Expose a service, define the meta information of the service. One service can use multiple protocols to expose and can be registered to multiple registry centers | +| dubbo:reference/ | Reference Configuration | Create a remote service agent, one reference can point to multiple registry centers | +| dubbo:protocol/ | Protocol Configuration | Configure protocol information for providing services, protocol is specified by the provider and accepted passively by the consumer | +| dubbo:application/ | Application Configuration | Configure current application information, regardless of whether the application is provider or consumer | +| dubbo:module/ | Module Configuration | Configure current module information. Optional | +| dubbo:registry/ | Registry Center Configuration | Configure information related to connect registry centers | +| dubbo:monitor/ | Monitoring Center Configuration | Configure information related to connect monitor centers. Optional | +| dubbo:provider/ | Provider Configuration | When some properties ProtocolConfig or ServiceConfig are not configured, use this default value. Optional | +| dubbo:consumer/ | Consumer Configuration | When some properties of ReferenceConfig are not configured, use this default value. Optional | +| dubbo:method/ | Method Configuration | Configure specific method level information of ServiceConfig and ReferenceConfig | +| dubbo:argument/ | Parameter Configuration | Configure parameters of specific method | + +![undefined](https://cdn.yuque.com/lark/0/2018/png/15841/1527849348155-8423d401-9ea4-4dc6-8720-d9e3d90963b6.png) + + Configuration Diagram + +## Configuration item in detail + +* dubbo:application name="hello-world-app" / +Apply to specific application name, note that you need to make sure that the application name is unique. The application name can be displayed in the following console admin for easy management. + +* dubbo:registry address="multicast://224.5.6.7:1234"
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new f2940c7 build site f2940c7 is described below commit f2940c7370eb47f9f6cd4c8ee14df359a0e32334 Author: zhuyong AuthorDate: Wed Aug 15 11:35:01 2018 +0800 build site --- ...bbo-basic-usage-dubbo-provider-configuration.md | 6 +- build/blog.js | 2 +- ...o-basic-usage-dubbo-provider-configuration.html | 405 + ...o-basic-usage-dubbo-provider-configuration.json | 4 + en-us/blog/index.html | 2 +- site_config/blog.js| 7 + ...o-basic-usage-dubbo-provider-configuration.html | 85 - ...o-basic-usage-dubbo-provider-configuration.json | 2 +- 8 files changed, 488 insertions(+), 25 deletions(-) diff --git a/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md index f9f59e0..8f0d26b 100644 --- a/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md +++ b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md @@ -99,12 +99,12 @@ For other configuration properties, please refer to xsd:http://dubbo.apache.or For other properties,you can refer to xsd above。 -## Configuration Coverage Relationship +## Configuration Override Relationship ![undefined](https://cdn.yuque.com/lark/0/2018/png/15841/1527849374313-94a5ea24-0e72-4d83-871b-e0e95eab646a.png) Configuration Coverage Relationship Diagram -The coverage relationship here includes the configuration of both provider end and consumer end. If you have any questions about consumer, you can refer to the next chapter, consumer chapter, to understand. +The Override relationship here includes the configuration of both provider end and consumer end. If you have any questions about consumer, you can refer to the next chapter, consumer chapter, to understand. dubbo.properties Configuration @@ -251,7 +251,7 @@ Skip this step if there is already a project. Create a Spring Boot project, whic Define interface: UserReadService ``` public interface UserReadService{ -public User getUserById(Long userId); +public User getUserById(Long userId); } ``` Generally, this interface should be placed in an independent JAR file as a client package. diff --git a/build/blog.js b/build/blog.js index f369f7d..331c8f6 100644 --- a/build/blog.js +++ b/build/blog.js @@ -3,4 +3,4 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t + + + + + + + + + dubbo-basic-usage-dubbo-provider-configuration + + + + + 中http://www.springframework.org/schema/beans; +xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; +xmlns:dubbo=http://dubbo.apache.org/schema/dubbo; +xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd; +dubbo:application name=hello-world-app / +dubbo:registry address=multicast://224.5.6.7:1234 / +dubbo:protocol name=dubbo port=20880 / +dubbo:service interface=com.alibaba.dubbo.demo.DemoService ref=demoServiceLocal / +dubbo:reference id=demoServiceRemote interface=com.alibaba.dubbo.demo.DemoService / +/beans + +In the example above,note the way to write dubbo schema: +beans xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; + xmlns:dubbo=http://code.alibabatech.com/schema/dubbo; + xmlns=http://www.springframework.org/schema/beans; + xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd + http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd; + +Supported Configuration Tags + + + +Tags +Application +Describe + + + + +dubbo:service/ +Service Configuration +Expose a service, define the meta information of the service. One service can use multiple protocols to expose and can be registered to multiple registry centers + + +dubbo:reference/ +Reference Configuration +Create a remote service agent, one reference can point to multiple registry centers + + +dubbo:protocol/ +Protocol Configuration +Configure protocol information for providing services, protocol is specified by the provider and accepted passively by the consumer + + +dubbo:application/ +Application Configuration +Configure current application information, regardless of whether the application is provider or consumer + + +dubbo:module/ +Module Configuration +Configure current module i
[incubator-dubbo-website] branch asf-site updated: Translate the article dubbo2.js
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 11fe550 Translate the article dubbo2.js 11fe550 is described below commit 11fe55044cb0bb07d25ed897fdbabe63b171824a Author: Stella0824 <34200550+stella0...@users.noreply.github.com> AuthorDate: Wed Aug 15 11:43:40 2018 +0800 Translate the article dubbo2.js * add en blog --- blog/en-us/dubbo2-js.md| 266 + blog/zh-cn/dubbo2-js.md| 4 +- img/blog/motan-protocol-en.png | Bin 0 -> 355484 bytes 3 files changed, 268 insertions(+), 2 deletions(-) diff --git a/blog/en-us/dubbo2-js.md b/blog/en-us/dubbo2-js.md new file mode 100644 index 000..dbd9ec1 --- /dev/null +++ b/blog/en-us/dubbo2-js.md @@ -0,0 +1,266 @@ + +# Implementation of cross-language calls by dubbo2.js +> [dubbo2.js](https://github.com/dubbo/dubbo2.js) is a Dubbo client for node.js developped by [Qianmiwang](https://www.qianmi.com/). It supports Dubbo's native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo's community. + +## Cross-language calls for micro service +Nowadays, Internet architecture tends to be micro-service way. The discussions about micro-service architecture becomes the most mentioned topic in different technical conferences. In China, most of the companies, such as Qianmiwang, choose Dubbo as their micro-servie architecture solution. As most of the internet companies, Qianmiwang uses various of programming languages. Java is for most of the backend services. Each business based on these backend can choose its own programming langu [...] + + - Spring cloud. Spring cloud provides a set of components for micro-service development. It is based on HTTP protocol and is designed in the restful way, which makes it support cross-language calls. Other languages can call the services simply by implementing an HTTP interface. + - Service mesh. People call service mesh the next generation of micro-service framework. The core of this solution is SideCar. Even though the concept of SideCar changes a lot during the revolution of Service mesh, its main job never changed: providing reliable communication between different services. + - Motan. [Motan](https://github.com/weibocom/motan) is an open source cross-language service framework developped by Sina Weibo. Its early version only supports motan-java. However, as the new versions come out, more languages are supported in order to handle the cross-language problem. Its newest version(1.1.0) provides motan-go, motan-php, motan-openresty, etc. Similar to SideCar in Service mesh, Motan forwards messages by mortan-go, which can be considered as an agent. Meanwhile, mo [...] + + According to the solutions below, there are two ways to solve the cross-language calls problem: + + - communicating by a common protocol. + - implementing an agent as a protocol adapter. + + When a new team is choosing technical solutions, what I mentioned below could be our candidates. Meanwhile, the old system's compatibility and migration costs should also be considered. The first trial we did is to work on RPC protocol. + +## Cross-language calls by a common protocol + + ### SpringMVC + + ![springmvc](../../img/blog/springmvc.png) + + Before achieving the real cross-language calls, the most common solution is to use the http protocol. We can call Dubbo provider indirectly by controller/restController provided by springmvc. This is easy to carry out, but there are lots of inconveniences. firstly, a call will go through too many nodes. Secondly, an extra communication layer (for http protocol) will be involved, but it could have been handled simply by the TCP protocol. Thirdly, we need to implement the RPC interface i [...] + + ### We support some common protocols + + Most of the service management frameworks support multiple protocols, dubbo as well. Besides its own protocol, the common protocols such as Dangdangwang's [Rest](https://dangdangdotcom.github.io/dubbox/rest.html) protocol and Qianmiwang's [json-rpc](https://github.com/apache/incubator-dubbo-rpc-jsonrpc) protocol are also supported. + + The developers getting used to traditional RPC interfaces might feel uncomfortable while working on restful RPC interfaces. On the one hand, this is not good for rebuilding new interfaces. On the other hand, restful style might make these interfaces incompatible with the other protocols used by old interfaces. Of course, if there is no old system problems, using Rest protocol is the easiest implementation of cross-language calls, since most of the languages support it. + + Even if Dubbo has tried on restful interface, the difference
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 3faef3b build site 3faef3b is described below commit 3faef3bb2615632dcf8ddde6772f6d96a2a91328 Author: zhuyong AuthorDate: Wed Aug 15 11:47:20 2018 +0800 build site --- build/blog.js | 2 +- en-us/blog/dubbo2-js.html | 233 ++ en-us/blog/dubbo2-js.json | 4 + en-us/blog/index.html | 2 +- site_config/blog.js | 7 ++ zh-cn/blog/dubbo2-js.html | 6 +- zh-cn/blog/dubbo2-js.json | 2 +- 7 files changed, 250 insertions(+), 6 deletions(-) diff --git a/build/blog.js b/build/blog.js index 331c8f6..e5784cd 100644 --- a/build/blog.js +++ b/build/blog.js @@ -3,4 +3,4 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t + + + + + + + + + dubbo2-js + + + + + 中https://github.com/dubbo/dubbo2.js;>dubbo2.js is a Dubbo client for node.js developped by https://www.qianmi.com/;>Qianmiwang. It supports Dubbo's native protocol, which makes the RPC calls between javascript and java efficient and agile. This tool has been contributed to Dubbo's community. + +Cross-language calls for micro service +Nowadays, Internet architecture tends to be micro-service way. The discussions about micro-service architecture becomes the most mentioned topic in different technical conferences. In China, most of the companies, such as Qianmiwang, choose Dubbo as their micro-servie architecture solution. As most of the internet companies, Qianmiwang uses various of programming languages. Java is for most of the backend services. Each business based on these backend can choose its own programming la [...] + +Spring cloud. Spring cloud provides a set of components for micro-service development. It is based on HTTP protocol and is designed in the restful way, which makes it support cross-language calls. Other languages can call the services simply by implementing an HTTP interface. +Service mesh. People call service mesh the next generation of micro-service framework. The core of this solution is SideCar. Even though the concept of SideCar changes a lot during the revolution of Service mesh, its main job never changed: providing reliable communication between different services. +Motan. https://github.com/weibocom/motan;>Motan is an open source cross-language service framework developped by Sina Weibo. Its early version only supports motan-java. However, as the new versions come out, more languages are supported in order to handle the cross-language problem. Its newest version(1.1.0) provides motan-go, motan-php, motan-openresty, etc. Similar to SideCar in Service mesh, Motan forwards messages by mortan-go, which can be considered as an agent. Me [...] + +According to the solutions below, there are two ways to solve the cross-language calls problem: + +communicating by a common protocol. +implementing an agent as a protocol adapter. + +When a new team is choosing technical solutions, what I mentioned below could be our candidates. Meanwhile, the old system's compatibility and migration costs should also be considered. The first trial we did is to work on RPC protocol. +Cross-language calls by a common protocol +SpringMVC + +Before achieving the real cross-language calls, the most common solution is to use the http protocol. We can call Dubbo provider indirectly by controller/restController provided by springmvc. This is easy to carry out, but there are lots of inconveniences. firstly, a call will go through too many nodes. Secondly, an extra communication layer (for http protocol) will be involved, but it could have been handled simply by the TCP protocol. Thirdly, we need to implement the RPC interface [...] +We support some common protocols +Most of the service management frameworks support multiple protocols, dubbo as well. Besides its own protocol, the common protocols such as Dangdangwang's https://dangdangdotcom.github.io/dubbox/rest.html;>Rest protocol and Qianmiwang's https://github.com/apache/incubator-dubbo-rpc-jsonrpc;>json-rpc protocol are also supported. +The developers getting used to traditional RPC interfaces might feel uncomfortable while working on restful RPC interfaces. On the one hand, this is not good for rebuilding new interfaces. On the other hand, restful style might make these interfaces incompatible with the other protocols used by old interfaces. Of course, if there is no old system problems, using Rest protocol is the easiest implementation of cross-language calls, since most of the languages support it. +Even if Dubbo has tried on restful
[incubator-dubbo-website] branch asf-site updated: Translate introduction-to-dubbo-spi-2.md (#100)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 73182ef Translate introduction-to-dubbo-spi-2.md (#100) 73182ef is described below commit 73182efe7d40e6c485042d3174e3162f2e8f2a99 Author: JackChen <767696...@qq.com> AuthorDate: Wed Aug 15 12:50:33 2018 +0800 Translate introduction-to-dubbo-spi-2.md (#100) --- blog/en-us/introduction-to-dubbo-spi-2.md | 391 ++ 1 file changed, 391 insertions(+) diff --git a/blog/en-us/introduction-to-dubbo-spi-2.md b/blog/en-us/introduction-to-dubbo-spi-2.md new file mode 100644 index 000..9d31cf3 --- /dev/null +++ b/blog/en-us/introduction-to-dubbo-spi-2.md @@ -0,0 +1,391 @@ +# Dubbo extensible mechanism source code analysis +--- + +In the [actual implementation of the Dubbo extensibility mechanism](#/blog/introduction-to-dubbo-spi.md), we learned some concepts of the Dubbo extension mechanism, explored the implementation of LoadBalance in Dubbo, and implemented a LoadBalance on our own. Do you think Dubbo's extension mechanism is great? Next, we will go deep into the source code of Dubbo and see what it is. + +# ExtensionLoader +ExtentionLoader is the core class, which is responsible for the loading and lifecycle management of extension points. Let's start with this class. There are many methods of Extension, and the common methods include: +* `public static ExtensionLoader getExtensionLoader(Class type)` +* `public T getExtension(String name)` +* `public T getAdaptiveExtension()` + +The common usages are: +* `LoadBalance lb = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(loadbalanceName)` +* `RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getAdaptiveExtension()` + +Notice: In the source code shown below, I'll remove extraneous code (such as logging, exception catching, and so on) to make it easy to read and understand. + +1. getExtensionLoader +This is a static factory method that enters an extensible interface and returns an ExtensionLoader entity class for this interface. With this entity class, you can get not only a specific extension based on name, but also an adaptive extension. + +```java +public static ExtensionLoader getExtensionLoader(Class type) { +// An extension point must be an interface +if (!type.isInterface()) { +throw new IllegalArgumentException("Extension type(" + type + ") is not interface!"); +} +// @SPI annotations must be provided +if (!withExtensionAnnotation(type)) { +throw new IllegalArgumentException("Extension type without @SPI Annotation!"); +} +// Get the corresponding ExtensionLoader from the cache according to the interface +// Each extension will only be loaded once +ExtensionLoader loader = (ExtensionLoader) EXTENSION_LOADERS.get(type); +if (loader == null) { +// Initialize extension +EXTENSION_LOADERS.putIfAbsent(type, new ExtensionLoader(type)); +loader = (ExtensionLoader) EXTENSION_LOADERS.get(type); +} +return loader; +} + +private ExtensionLoader(Class type) { +this.type = type; +objectFactory = (type == ExtensionFactory.class ? null : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension()); +} +``` + +2. getExtension + +```java +public T getExtension(String name) { +Holder holder = cachedInstances.get(name); +if (holder == null) { +cachedInstances.putIfAbsent(name, new Holder()); +holder = cachedInstances.get(name); +} +Object instance = holder.get(); +// Get it from the cache. If it does not exist, create +if (instance == null) { +synchronized (holder) { +instance = holder.get(); +if (instance == null) { +instance = createExtension(name); +holder.set(instance); +} +} +} +return (T) instance; +} +``` +Some judgments and caching have been made in the getExtention method, and the main logic is in the createExtension method. Let's move on to the createExtention method. + +```java +private T createExtension(String name) { +// Get the extension class according to the name of extension point. For example, for LoadBalance, get the RandomLoadBalance class according to random +Class clazz = getExtensionClasses().get(name); + +T instance = (T) EXTENSION_INSTANCES.get(clazz); +if (instance == null) { + // Use reflection to call newInstance to create an example of an extension class +E
[incubator-dubbo-website] branch asf-site updated: Blog translation (#99)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 978bc15 Blog translation (#99) 978bc15 is described below commit 978bc1508457b826a80d61b1feb8dbabcf25bab6 Author: siqizhuo AuthorDate: Wed Aug 15 12:57:14 2018 +0800 Blog translation (#99) * add english translation for blog/zh-ch/dubbo-new-async.md --- blog/en-us/dubbo-new-async.md | 577 ++ blog/zh-cn/dubbo-new-async.md | 2 +- site_config/blog.js | 6 + 3 files changed, 584 insertions(+), 1 deletion(-) diff --git a/blog/en-us/dubbo-new-async.md b/blog/en-us/dubbo-new-async.md new file mode 100644 index 000..c5c8bc7 --- /dev/null +++ b/blog/en-us/dubbo-new-async.md @@ -0,0 +1,577 @@ +# How to implement a fully asynchronous calls chain based on Dubbo. + +Implementing the full asynchronous programming based on Dubbo, which is a new feature introduced in version 2.7.0 after the enhancement of the existing asynchronous mode.This article first reviews the supported functions and existing problems of asynchronization in 2.6.x and earlier versions, and introduces the targeted enhancements based on CompletableFuture in version 2.7.0. Then, the use of enhanced asynchronous programming is elaborated through several examples. Finally, it summarize [...] + +## Asynchronous mode before version 2.6.x + +Dubbo Provides some asynchronous programming capabilities in 2.6.x and earlier versions, including [Asynchronous Call](http://dubbo.apache.org/books/dubbo-user-book/demos/async-call.html), [Parameter Callback](http://dubbo.apache.org/books/dubbo-user-book/demos/callback-parameter.html) and [Event Notification](http://dubbo.apache.org/books/dubbo-user-book/demos/events-notify.html) on Consumer side. There are some brief introductions to the usage and Demo in the above document links. + +But the current asynchronous method has the following problems: + +- Methods to access Future object are not direct enough. +- Future interface cannot implement automatic callback. Customized ResponseFuture class could implement callback, however it only supports limited asynchronous scenes. For example, it does not support mutual coordination or combination between Future objects. +- Asynchronization on Provider side is not supported. + +Take the asynchronous method of Consumer side as an example: + +1. Define a original synchronous interface and add the declaration to support asynchronous calls. + +``` +public interface FooService { +String findFoo(String name); +} +``` + +``` + + + +``` + +2. Obtain Future object through RpcContext. + +``` +// this call will return null immediately +fooService.findFoo(fooId); +// Obtain the Future instance. When the result is returned, Future instance will be notified and the result will be set to Future instance. +Future fooFuture = RpcContext.getContext().getFuture(); +fooFuture.get(); +``` + +or + +``` +// this call will return null immediately +fooService.findFoo(fooId); +// get Dubbo's built-in ResponseFuture, and set the callback +ResponseFuture future = ((FutureAdapter)RpcContext.getContext().getFuture()).getFuture(); +future.setCallback(new ResponseCallback() { +@Override +public void done(Object response) { +System.out.print(response); +} + +@Override +public void caught(Throwable exception) { +exception.printStackTrace(); +} +}); +``` + +From this simple example, we can see there are some inconveniences in use: + +1. The synchronization interface of findFoo cannot directly return a Future object representing the asynchronous result, which is further obtained through RpcContext. +2. Future object can only be obtained from get method that will block until getting the result. +3. Callback can be set by getting the built-in ResponseFuture interface. However, the API to obtain ResponseFuture is not convenient enough to support other asynchronous scenes except callback. For example, it does not support the scene where multiple Future objects work together. + +## Enhancement based on CompletableFuture in version 2.7.0 + +People who understand the evolution history of Future in Java should know that the Future used in Dubbo 2.6.x and earlier versions is introduced in Java 5, so there are some problems in function design.The CompletableFuture introduced in Java 8 further enriches the Future interface and solves these problems well. + +Support for Java 8 has been upgraded in Dubbo 2.7.0, and Dubbo has enhanced the current asynchronous functionality based on CompletableFuture. + +1. Now it supports direct definition of service interfaces that return CompletableFuture. Through these interfaces, we can implement asynchronous programming on both Consumer side and Provider side
[incubator-dubbo-website] branch asf-site updated: docsite build
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new eb159eb docsite build eb159eb is described below commit eb159eb7512280026093c11963a18396eb325dcc Author: zhuyong AuthorDate: Wed Aug 15 13:19:32 2018 +0800 docsite build --- build/blog.js | 2 +- en-us/blog/index.html | 2 +- site_config/blog.js | 21 ++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/build/blog.js b/build/blog.js index 78543c8..a59ae0d 100644 --- a/build/blog.js +++ b/build/blog.js @@ -3,4 +3,4 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t - 中中https://f.alicdn.com/react/15.4.1/react-with-addons.min.js;> https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;>
[incubator-dubbo-website] branch asf-site updated: add dubbo-invoke (#91)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 8142ed0 add dubbo-invoke (#91) 8142ed0 is described below commit 8142ed0abdc00b7f1a67e66bc09b2d4ecf211405 Author: Zoe-Hou <137178...@qq.com> AuthorDate: Wed Aug 15 11:52:56 2018 +0800 add dubbo-invoke (#91) --- blog/en-us/dubbo-invoke.md | 216 +++ blog/zh-cn/dubbo-invoke.md | 12 +- docs/zh-cn/user/demos/logger-strategy.md | 16 +-- docs/zh-cn/user/demos/static-service.md | 2 +- 4 files changed, 231 insertions(+), 15 deletions(-) diff --git a/blog/en-us/dubbo-invoke.md b/blog/en-us/dubbo-invoke.md new file mode 100644 index 000..ab51e2d --- /dev/null +++ b/blog/en-us/dubbo-invoke.md @@ -0,0 +1,216 @@ + +# Dubbo: Several ways about synchronous/asynchronous invoke + +As we all know,Dubbo adopts a single large join protocol by default and takes the NIO asynchronous communication mechanism of Netty as the low-level implementation. Based on this mechanism, Dubbo implements several invocation modes as follows: + +* synchronous invoke +* asynchronous invoke +* parameters callback +* event notification + +### Synchronous invoke + +Synchronous invoke is a kind of blocking invocation mode, that is the Consumer keeps blocking and waiting, until the Provider returns. + +Generally, a typical synchronous invocation process is as follows: + +1. Consumer service thread invokes the remote API and sends requests to the Provider. Meanwhile, the current service thread stays in blocking state; +2. Provider process relative request after receiving it from Consumer. Then returns the results to Consumer; +3. After Consumer receiving results, the current thread continues to execute. + +Here are two problems: + +1. How does Consumer service thread turn into `blocking` state? +2. How does the service thread be awaked to execute after Consumer receiving results? + +In fact, the low-level I/O operations of Dubbo are all asynchronous. The Consumer gets a Future object after invoking the Provider. For synchronous invoke, the service thread takes advantage of `Future#get(timeout)` to block and wait for Provider returning results, with the 'timeout' indicating the timeout defined by Consumer. When the result returns, the Future will be set and the blocked service thread will be awaked. The service thread will return an exception if there is no result af [...] + +### Asynchronous invoke + +For scenarios that Provider has a long response time, it's necessary to implement asynchronous invoke based on Dubbo's underlying asynchronous NIO. It could utilize the resource of Consumer effectively, and costs less than using multi-thread for Consumer. + +Asynchronous invoke does not need specific configuration for Provider. In the example,the API of Provider is defined as follow: + +```java +public interface AsyncService { +String goodbye(String name); +} +``` + +# Consumer configuration + +```xml + + + +``` + +Notice that if we need an asynchronous revoke method, we must use `` label to describe it. + +# Consumer triggers invocation + +```java +AsyncService service = ...; +String result = service.goodbye("samples");// returns NULL and DO NOT use! +Future future = RpcContext.getContext().getFuture(); +... // other service thread logic +result = future.get(); // could use get(timeout, unit) to configure timeout, when it needs to get the asynchronous result +``` + +After Dubbo Consumer triggers invocation, it uses `RpcContext.getContext().getFuture()` to get the relative `Future` object, and then it could start executing other tasks. Anytime when we need results, `future.get(timeout)` is supposed to be called. + +Under several special conditions, it could be set whether to wait for sending the request, to accelerate the return of invocation: + +* `sent="true"` Waiting for sending the request, and return an exception if it fails; +* `sent="false"` Do not wait for the request, and returns immediately after putting the request to the I/O queue. + +We set it to `false` by default. And detailed configuration is as follows: + +```xml + +``` + +If you only want to be asynchronous, then omit the result thoroughly, `return="false"` could be set to reduce the creation and management cost of Future: + +```xml + +``` + +At this time,`RpcContext.getContext().getFuture()` will return `null`。 + +The complete sequence diagram of asynchronous invoke is as follow: + +![Asynchronous invoke](../../img/blog/dubbo-async.svg) + +The sample locates at:https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-async + +### Parameters callback + +The parameter Callback is somewhat similar to the local Callback mechanism, but Callba
[incubator-dubbo-website] branch asf-site updated: Translate Blog-Dubbo's generic calls(#98)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 899026e Translate Blog-Dubbo's generic calls(#98) 899026e is described below commit 899026e10447ecb7ebbfaf01269e94b2e6f274cc Author: ChasePGit <1042132...@qq.com> AuthorDate: Wed Aug 15 12:43:19 2018 +0800 Translate Blog-Dubbo's generic calls(#98) --- blog/en-us/dubbo-generic calls.md | 178 ++ 1 file changed, 178 insertions(+) diff --git a/blog/en-us/dubbo-generic calls.md b/blog/en-us/dubbo-generic calls.md new file mode 100644 index 000..79c82ad --- /dev/null +++ b/blog/en-us/dubbo-generic calls.md @@ -0,0 +1,178 @@ +# Generic Calls of Dubbo +The generic call could be considered to be used in the following cases: +- Service test platform +- API service gateway + +The generic call is mainly used when the consumer does not have an API interface; +instead of introducing the interface jar package, the service call is initiated directly through the GenericService interface, and all POJOs in the parameters and return values are represented by a `Map`. +Generic calls do not require attention on the server and can be exposed as normal services. + +Next, let's take a look at how the consumer uses generic calls for service calls. + +### Generic calls through Spring XML configuration + +Declare `generic="true"` in Spring configuration, such as + +```xml +"userService" interface="com.alibaba.dubbo.samples.generic.api.IUserService" generic="true"/> +``` + +Where you need to use it, you can call it by forcing a type conversion to GenericService. + +```java +GenericService userService = (GenericService) context.getBean("userService"); +// primary param and return value +String name = (String) userService.$invoke("delete", new String[]{int.class.getName()}, new Object[]{1}); +System.out.println(name); +``` + +Among them, + +1. The interface GenericService has only one method, named $invoke, which takes three arguments, a method name, an array of method parameter types, and an array of parameter values. + +2. For arrays of method parameter types + + i. If it is a basic type, such as int or long, use `int.class.getName()` to get its type; + + ii. If it is a basic type array, such as int[], use `int[].class.getName()`; + + iii.If it is a POJO, use the full class name directly, such as `com.alibaba.dubbo.samples.generic.api.Params`. + +### Generic calls through API programming + +```java +ApplicationConfig application = new ApplicationConfig()ApplicationConfig application = new ApplicationConfig(); +application.setName("api-generic-consumer"); + +RegistryConfig registry = new RegistryConfig(); +registry.setAddress("zookeeper://127.0.0.1:2181"); + +application.setRegistry(registry); + +ReferenceConfig reference = new ReferenceConfig(); +// weak type interface name +reference.setInterface("com.alibaba.dubbo.samples.generic.api.IUserService"); +// declared as a generalized interface +reference.setGeneric(true); + +reference.setApplication(application); + +// replace all interface references with com.alibaba.dubbo.rpc.service.GenericService +GenericService genericService = reference.get(); + +String name = (String) genericService.$invoke("delete", new String[]{int.class.getName()}, new Object[]{1}); +System.out.println(name); +``` + +Through the API, you don't need to configure the service in advance like XML. You can dynamically construct ReferenceConfig; the API is more common than XML. + +### The case where parameters or return values are POJOs + +For example, the method signature is `User get(Params params)`, where `User` has two attributes, id and name, and `Params` has one attribute, query. + +The following is the calling code of the consumer: + +```java +String[] parameterTypes = new String[]{"com.alibaba.dubbo.samples.generic.api.Params"}; +Map params = new HashMap(); +param.put("class", "com.alibaba.dubbo.samples.generic.api.Params"); +param.put("query", "a=b"); +Object user = userService.$invoke("get", parameterTypes, new Object[]{param}); +System.out.println("sample one result: " + user); +``` + +The output of the above code is: + +``` +sample one result: {name=charles, id=1, class=com.alibaba.dubbo.samples.generic.api.User} +``` + +Here, the Dubbo framework will automatically convert the return value from POJO to Map. +It can be seen that the return value `user` is a HashMap, which stores three k/vs, name, id, and class. + +### Generic interface implementation + +The implementation of the generic interface is mainly used when the server does not have an API interface. All POJ
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 49917b0 build site 49917b0 is described below commit 49917b01a478d041556bd69f1638897a085b5faa Author: zhuyong AuthorDate: Wed Aug 15 13:10:19 2018 +0800 build site --- build/blog.js | 2 +- en-us/blog/dubbo-new-async.html | 416 en-us/blog/dubbo-new-async.json | 4 + en-us/blog/index.html | 2 +- en-us/blog/introduction-to-dubbo-spi-2.html | 388 ++ en-us/blog/introduction-to-dubbo-spi-2.json | 4 + site_config/blog.js | 45 +-- zh-cn/blog/dubbo-new-async.html | 4 +- zh-cn/blog/dubbo-new-async.json | 2 +- zh-cn/blog/index.html | 2 +- 10 files changed, 841 insertions(+), 28 deletions(-) diff --git a/build/blog.js b/build/blog.js index 1349987..78543c8 100644 --- a/build/blog.js +++ b/build/blog.js @@ -3,4 +3,4 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t + + + + + + + + + dubbo-new-async + + + + + 中http://dubbo.apache.org/books/dubbo-user-book/demos/async-call.html;>Asynchronous Call, http://dubbo.apache.org/books/dubbo-user-book/demos/callback-parameter.html;>Parameter Callback and http://dubbo.apache.org/books/dubbo-user-book/demos/events-notify.html;>Event Notification on Consumer side. There are some brief introductions to the usage and De [...] +But the current asynchronous method has the following problems: + +Methods to access Future object are not direct enough. +Future interface cannot implement automatic callback. Customized ResponseFuture class could implement callback, however it only supports limited asynchronous scenes. For example, it does not support mutual coordination or combination between Future objects. +Asynchronization on Provider side is not supported. + +Take the asynchronous method of Consumer side as an example: + +Define a original synchronous interface and add the declaration to support asynchronous calls. + +public interface FooService { +String findFoo(String name); +} + +dubbo:reference id=fooService interface=com.alibaba.foo.FooService + dubbo:method name=findFoo async=true / +/dubbo:reference + + +Obtain Future object through RpcContext. + +// this call will return null immediately +fooService.findFoo(fooId); +// Obtain the Future instance. When the result is returned, Future instance will be notified and the result will be set to Future instance. +FutureFoo fooFuture = RpcContext.getContext().getFuture(); +fooFuture.get(); + +or +// this call will return null immediately +fooService.findFoo(fooId); +// get Dubbo's built-in ResponseFuture, and set the callback +ResponseFuture future = ((FutureAdapter)RpcContext.getContext().getFuture()).getFuture(); +future.setCallback(new ResponseCallback() { +@Override +public void done(Object response) { +System.out.print(response); +} + +@Override +public void caught(Throwable exception) { +exception.printStackTrace(); +} +}); + +From this simple example, we can see there are some inconveniences in use: + +The synchronization interface of findFoo cannot directly return a Future object representing the asynchronous result, which is further obtained through RpcContext. +Future object can only be obtained from get method that will block until getting the result. +Callback can be set by getting the built-in ResponseFuture interface. However, the API to obtain ResponseFuture is not convenient enough to support other asynchronous scenes except callback. For example, it does not support the scene where multiple Future objects work together. + +Enhancement based on CompletableFuture in version 2.7.0 +People who understand the evolution history of Future in Java should know that the Future used in Dubbo 2.6.x and earlier versions is introduced in Java 5, so there are some problems in function design.The CompletableFuture introduced in Java 8 further enriches the Future interface and solves these problems well. +Support for Java 8 has been upgraded in Dubbo 2.7.0, and Dubbo has enhanced the current asynchronous functionality based on CompletableFuture. + + +Now it supports direct definition of service interfaces that return CompletableFuture. Through these interfaces, we can implement asynchronous programming on both Consumer side and Provider side more naturally. +public interface AsyncService { +CompletableFutureString sayHello(String name); +} + + + +If you don't want to define the return val
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 32f44cd build site 32f44cd is described below commit 32f44cd43891f67099c37799d5cc18cdd8d4ef6f Author: zhuyong AuthorDate: Wed Aug 15 15:19:23 2018 +0800 build site --- blog/zh-cn/dubbo-meetup-chengdu.md| 8 ++ blog/zh-cn/dubbo-meetup-shenzhen.md | 9 +++ build/community.js| 4 +-- img/blog/dubbo-chengdu-meetup-img.jpg | Bin 0 -> 2553076 bytes img/blog/dubbo-chengdu-meetup.jpg | Bin 0 -> 337310 bytes img/blog/dubbo-meetup-shenzhen-haibao.jpg | Bin 0 -> 350625 bytes img/blog/dubbo-shenzhen-meetup.jpg| Bin 0 -> 60403 bytes site_config/community.jsx | 14 +++ zh-cn/blog/dubbo-meetup-chengdu.html | 36 +++ zh-cn/blog/dubbo-meetup-chengdu.json | 4 +++ zh-cn/blog/dubbo-meetup-shenzhen.html | 40 ++ zh-cn/blog/dubbo-meetup-shenzhen.json | 4 +++ zh-cn/community/index.html| 2 +- 13 files changed, 118 insertions(+), 3 deletions(-) diff --git a/blog/zh-cn/dubbo-meetup-chengdu.md b/blog/zh-cn/dubbo-meetup-chengdu.md new file mode 100644 index 000..60fe5fb --- /dev/null +++ b/blog/zh-cn/dubbo-meetup-chengdu.md @@ -0,0 +1,8 @@ +第四届Dubbo开发者沙龙将于8月26日在成都举行 +--- + +Aliware Open Source•成都站-Apache Dubbo开发者沙龙将于8月26日(周日)在成都高新区天府五街200号菁蓉国际广场8号楼2楼会议厅举办,技术GG们的思想盛宴,干货与福利一个都不会少。 + +报名链接:http://www.huodongxing.com/event/7453091088400 + + diff --git a/blog/zh-cn/dubbo-meetup-shenzhen.md b/blog/zh-cn/dubbo-meetup-shenzhen.md new file mode 100644 index 000..29a9fba --- /dev/null +++ b/blog/zh-cn/dubbo-meetup-shenzhen.md @@ -0,0 +1,9 @@ +第三届Dubbo开发者沙龙在深圳成功举办 +--- + +第三届Dubbo开发者沙龙在深圳成功举办,超过2000位开发者报名,现场参与人数700+,通过阿里云天池、云栖社区、大咖说引导线上直播观看次数17000+ + +分享嘉宾 + * 陈志轩: Dubbo开源现状和2.7规划 + * 康彬: 乐信集团的微服务化之路 + * 林佳梁: Sentinel——企业用户的全方位流量哨兵 \ No newline at end of file diff --git a/build/community.js b/build/community.js index 8380cce..0045cda 100644 --- a/build/community.js +++ b/build/community.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t + + + + + + + + + dubbo-meetup-chengdu + + + + + Enhttp://www.huodongxing.com/event/7453091088400;>http://www.huodongxing.com/event/7453091088400 + +DisclaimerApache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubatio [...] + https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"</a>;> + https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;> + + window.rootPath = ''; + + + + https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"</a>;> + + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + + gtag('config', 'UA-112489517-1'); + + + \ No newline at end of file diff --git a/zh-cn/blog/dubbo-meetup-chengdu.json b/zh-cn/blog/dubbo-meetup-chengdu.json new file mode 100644 index 000..71538dc --- /dev/null +++ b/zh-cn/blog/dubbo-meetup-chengdu.json @@ -0,0 +1,4 @@ +{ + "filename": "dubbo-meetup-chengdu.md", + "__html": "第四届Dubbo开发者沙龙将于8月26日在成都举行\nAliware Open Source•成都站-Apache Dubbo开发者沙龙将于8月26日(周日)在成都高新区天府五街200号菁蓉国际广场8号楼2楼会议厅举办,技术GG们的思想盛宴,干货与福利一个都不会少。\n报名链接:http://www.huodongxing.com/event/7453091088400\;>htt
[incubator-dubbo] branch master updated: Optimize init loadbalance. (#2309)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new e22ac38 Optimize init loadbalance. (#2309) e22ac38 is described below commit e22ac38158becc11c4543ff9ff0bf930f79217d0 Author: 时无两丶 <442367...@qq.com> AuthorDate: Fri Aug 17 10:02:57 2018 +0800 Optimize init loadbalance. (#2309) * Optimize init loadbalance before 'doSelect' method called --- .../cluster/support/AbstractClusterInvoker.java| 43 +++--- .../support/AbstractClusterInvokerTest.java| 17 ++--- 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java index 2e3ab14..090f286 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java @@ -22,6 +22,7 @@ import org.apache.dubbo.common.Version; import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.logger.Logger; import org.apache.dubbo.common.logger.LoggerFactory; +import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; @@ -94,17 +95,18 @@ public abstract class AbstractClusterInvoker implements Invoker { /** * Select a invoker using loadbalance policy. - * a)Firstly, select an invoker using loadbalance. If this invoker is in previously selected list, or, + * a) Firstly, select an invoker using loadbalance. If this invoker is in previously selected list, or, * if this invoker is unavailable, then continue step b (reselect), otherwise return the first selected invoker - * b)Reslection, the validation rule for reselection: selected > available. This rule guarantees that + * + * b) Reslection, the validation rule for reselection: selected > available. This rule guarantees that * the selected invoker has the minimum chance to be one in the previously selected list, and also * guarantees this invoker is available. * * @param loadbalance load balance policy - * @param invocation - * @param invokers invoker candidates - * @param selected exclude selected invokers or not - * @return + * @param invocation invocation + * @param invokersinvoker candidates + * @param selectedexclude selected invokers or not + * @return the invoker which will final to do invoke. * @throws RpcException */ protected Invoker select(LoadBalance loadbalance, Invocation invocation, List> invokers, List> selected) throws RpcException { @@ -138,9 +140,6 @@ public abstract class AbstractClusterInvoker implements Invoker { return null; if (invokers.size() == 1) return invokers.get(0); -if (loadbalance == null) { -loadbalance = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(Constants.DEFAULT_LOADBALANCE); -} Invoker invoker = loadbalance.select(invokers, getUrl(), invocation); //If the `invoker` is in the `selected` or invoker is unavailable && availablecheck is true, reselect. @@ -226,7 +225,6 @@ public abstract class AbstractClusterInvoker implements Invoker { @Override public Result invoke(final Invocation invocation) throws RpcException { checkWhetherDestroyed(); -LoadBalance loadbalance = null; // binding attachments into invocation. Map contextAttachments = RpcContext.getContext().getAttachments(); @@ -235,10 +233,7 @@ public abstract class AbstractClusterInvoker implements Invoker { } List> invokers = list(invocation); -if (invokers != null && !invokers.isEmpty()) { -loadbalance = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(invokers.get(0).getUrl() -.getMethodParameter(RpcUtils.getMethodName(invocation), Constants.LOADBALANCE_KEY, Constants.DEFAULT_LOADBALANCE)); -} +LoadBalance loadbalance = initLoadBalance(invokers, invocation); RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation); return doInvoke(invocation, invokers, loadbalance); } @@ -276,4 +271,24 @@ public abstract class AbstractClusterInvoker implements Invoker { List> invokers = directory.list(invocation); return invokers; } + +/** + * Init LoadBalance. + * + * if invokers is not empty, init from the first invoke's url and invo
[incubator-dubbo] branch master updated: add log4j2 extension (#2279)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new af2a538 add log4j2 extension (#2279) af2a538 is described below commit af2a538d3dfada0f719fc07e36919148d8d97c12 Author: 玩玩跑跑 <18244217...@163.com> AuthorDate: Fri Aug 17 15:43:50 2018 +0800 add log4j2 extension (#2279) * add log4j2 for dubbo logging, #1713 * remove unused code, add provided scope to log4j2 --- dubbo-common/pom.xml | 10 ++ .../apache/dubbo/common/logger/LoggerFactory.java | 11 +- .../dubbo/common/logger/log4j2/Log4j2Logger.java | 128 + .../common/logger/log4j2/Log4j2LoggerAdapter.java | 107 + .../org.apache.dubbo.common.logger.LoggerAdapter | 3 +- .../dubbo/common/logger/LoggerAdapterTest.java | 5 +- .../dubbo/common/logger/slf4j/Slf4jLoggerTest.java | 1 - dubbo-dependencies-bom/pom.xml | 13 +++ 8 files changed, 273 insertions(+), 5 deletions(-) diff --git a/dubbo-common/pom.xml b/dubbo-common/pom.xml index 72d43da..22a1322 100644 --- a/dubbo-common/pom.xml +++ b/dubbo-common/pom.xml @@ -44,6 +44,16 @@ log4j +org.apache.logging.log4j +log4j-api +provided + + +org.apache.logging.log4j +log4j-core +provided + + org.javassist javassist diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java index 7848224..ec98755 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/LoggerFactory.java @@ -20,6 +20,7 @@ import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.logger.jcl.JclLoggerAdapter; import org.apache.dubbo.common.logger.jdk.JdkLoggerAdapter; import org.apache.dubbo.common.logger.log4j.Log4jLoggerAdapter; +import org.apache.dubbo.common.logger.log4j2.Log4j2LoggerAdapter; import org.apache.dubbo.common.logger.slf4j.Slf4jLoggerAdapter; import org.apache.dubbo.common.logger.support.FailsafeLogger; @@ -47,6 +48,8 @@ public class LoggerFactory { setLoggerAdapter(new Log4jLoggerAdapter()); } else if ("jdk".equals(logger)) { setLoggerAdapter(new JdkLoggerAdapter()); +} else if ("log4j2".equals(logger)) { +setLoggerAdapter(new Log4j2LoggerAdapter()); } else { try { setLoggerAdapter(new Log4jLoggerAdapter()); @@ -55,9 +58,13 @@ public class LoggerFactory { setLoggerAdapter(new Slf4jLoggerAdapter()); } catch (Throwable e2) { try { -setLoggerAdapter(new JclLoggerAdapter()); +setLoggerAdapter(new Log4j2LoggerAdapter()); } catch (Throwable e3) { -setLoggerAdapter(new JdkLoggerAdapter()); +try { +setLoggerAdapter(new JclLoggerAdapter()); +} catch (Throwable e4) { +setLoggerAdapter(new JdkLoggerAdapter()); +} } } } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java new file mode 100644 index 000..ed40b65 --- /dev/null +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java @@ -0,0 +1,128 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.dubbo.common.logger.log4j2; + +import org.apache.dubbo.common.logger.Logger; + +public class Log4j2Logger implements Logger { + +private final org.apa
[incubator-dubbo] branch master updated: replace the method httpclient which is annotated with “@Deprecated” (#2103)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 64f4adb replace the method httpclient which is annotated with “@Deprecated” (#2103) 64f4adb is described below commit 64f4adb5e6a71fd8d7cc9276ae6cf6963014b69a Author: Mccrea AuthorDate: Fri Aug 17 15:47:07 2018 +0800 replace the method httpclient which is annotated with “@Deprecated” (#2103) --- .../dubbo/rpc/protocol/hessian/HessianProtocol.java | 4 +++- .../rpc/protocol/hessian/HttpClientConnectionFactory.java | 15 ++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocol.java b/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocol.java index ebe1cbd..8a7e0e9 100644 --- a/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocol.java +++ b/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocol.java @@ -109,7 +109,9 @@ public class HessianProtocol extends AbstractProxyProtocol { hessianProxyFactory.setOverloadEnabled(isOverloadEnabled); String client = url.getParameter(Constants.CLIENT_KEY, Constants.DEFAULT_HTTP_CLIENT); if ("httpclient".equals(client)) { -hessianProxyFactory.setConnectionFactory(new HttpClientConnectionFactory()); +HessianConnectionFactory factory = new HttpClientConnectionFactory(); +factory.setHessianProxyFactory(hessianProxyFactory); +hessianProxyFactory.setConnectionFactory(factory); } else if (client != null && client.length() > 0 && !Constants.DEFAULT_HTTP_CLIENT.equals(client)) { throw new IllegalStateException("Unsupported http protocol client=\"" + client + "\"!"); } else { diff --git a/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java b/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java index 24becb4..36b1e2b 100644 --- a/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java +++ b/dubbo-rpc/dubbo-rpc-hessian/src/main/java/org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java @@ -18,11 +18,14 @@ package org.apache.dubbo.rpc.protocol.hessian; import org.apache.dubbo.common.Constants; import org.apache.dubbo.rpc.RpcContext; + import com.caucho.hessian.client.HessianConnection; import com.caucho.hessian.client.HessianConnectionFactory; import com.caucho.hessian.client.HessianProxyFactory; import org.apache.http.client.HttpClient; +import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.params.HttpConnectionParams; import java.io.IOException; @@ -33,16 +36,19 @@ import java.net.URL; */ public class HttpClientConnectionFactory implements HessianConnectionFactory { -private final HttpClient httpClient = new DefaultHttpClient(); +private HttpClient httpClient; @Override public void setHessianProxyFactory(HessianProxyFactory factory) { -HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), (int) factory.getConnectTimeout()); -HttpConnectionParams.setSoTimeout(httpClient.getParams(), (int) factory.getReadTimeout()); +RequestConfig requestConfig = RequestConfig.custom() +.setConnectionRequestTimeout((int) factory.getConnectTimeout()) +.setSocketTimeout((int) factory.getReadTimeout()) +.build(); +httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build(); } @Override -public HessianConnection open(URL url) throws IOException { +public HessianConnection open(URL url) { HttpClientConnection httpClientConnection = new HttpClientConnection(httpClient, url); RpcContext context = RpcContext.getContext(); for (String key : context.getAttachments().keySet()) { @@ -50,5 +56,4 @@ public class HttpClientConnectionFactory implements HessianConnectionFactory { } return httpClientConnection; } - }
[incubator-dubbo] branch master updated: #2188 ConsistentHashLoadBalance selectForKey can optimization (#2190)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 6ebc183 #2188 ConsistentHashLoadBalance selectForKey can optimization (#2190) 6ebc183 is described below commit 6ebc183173eef83d77208ae8a7f1cda2ccf3b977 Author: huangyunbin <395018...@qq.com> AuthorDate: Mon Aug 6 15:41:14 2018 +0800 #2188 ConsistentHashLoadBalance selectForKey can optimization (#2190) --- .../apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java index 31749b2..8671cde 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java @@ -103,7 +103,7 @@ public class ConsistentHashLoadBalance extends AbstractLoadBalance { } private Invoker selectForKey(long hash) { -Map.Entry> entry = virtualInvokers.tailMap(hash, true).firstEntry(); +Map.Entry> entry = virtualInvokers.ceilingEntry(hash); if (entry == null) { entry = virtualInvokers.firstEntry(); }
[incubator-dubbo-website] branch asf-site updated: add blogs (#87)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 26eadb1 add blogs (#87) 26eadb1 is described below commit 26eadb158488a435e8af9ca2998313a1c0234f03 Author: Jerrick Zhu AuthorDate: Fri Aug 10 16:14:53 2018 +0800 add blogs (#87) --- blog/zh-cn/dubbo-generic-invoke.md | 172 + blog/zh-cn/dubbo-loadbalance.md| 0 blog/zh-cn/dubbo-new-async.md | 0 site_config/blog.js| 23 - 4 files changed, 194 insertions(+), 1 deletion(-) diff --git a/blog/zh-cn/dubbo-generic-invoke.md b/blog/zh-cn/dubbo-generic-invoke.md new file mode 100644 index 000..c170c9b --- /dev/null +++ b/blog/zh-cn/dubbo-generic-invoke.md @@ -0,0 +1,172 @@ +# Dubbo的泛化调用 + +以下几种场景可以考虑使用泛化调用: + +- 服务测试平台 +- API 服务网关 + +泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,参数及返回值中的所有 POJO 均用 `Map` 表示。泛化调用对于服务端无需关注,按正常服务进行暴露即可。 + +下面来看看消费端如何使用泛化调用进行服务调用。 + + 通过 Spring XML 配置进行泛化调用 + +在 Spring 配置申明 `generic="true"`,如: + +```xml + +``` + +需要使用的地方,通过强制类型转化为 GenericService 进行调用: + +```java +GenericService userService = (GenericService) context.getBean("userService"); +// primary param and return value +String name = (String) userService.$invoke("delete", new String[]{int.class.getName()}, new Object[]{1}); +System.out.println(name); +``` + +其中: + +1. GenericService 这个接口只有一个方法,名为 `$invoke`,它接受三个参数,分别为方法名、方法参数类型数组和参数值数组; +2. 对于方法参数类型数组 + 1. 如果是基本类型,如 int 或 long,可以使用 `int.class.getName()`获取其类型; + 2. 如果是基本类型数组,如 int[],则可以使用 `int[].class.getName()`; + 3. 如果是 POJO,则直接使用全类名,如 `com.alibaba.dubbo.samples.generic.api.Params`。 + + 通过 API 编程进行泛化调用 + +``` +ApplicationConfig application = new ApplicationConfig()ApplicationConfig application = new ApplicationConfig(); +application.setName("api-generic-consumer"); + +RegistryConfig registry = new RegistryConfig(); +registry.setAddress("zookeeper://127.0.0.1:2181"); + +application.setRegistry(registry); + +ReferenceConfig reference = new ReferenceConfig(); +// 弱类型接口名 +reference.setInterface("com.alibaba.dubbo.samples.generic.api.IUserService"); +// 声明为泛化接口 +reference.setGeneric(true); + +reference.setApplication(application); + +// 用com.alibaba.dubbo.rpc.service.GenericService可以替代所有接口引用 +GenericService genericService = reference.get(); + +String name = (String) genericService.$invoke("delete", new String[]{int.class.getName()}, new Object[]{1}); +System.out.println(name); +``` + +通过 API 的方式,不需要像 XML 的方式需要提前将服务配置好,可以动态构建 ReferenceConfig;相对 XML 来说,API 的方式更常见。 + + 参数或返回值是 POJO 的场景 + +比如方法签名是 `User get(Params params);`其中 User 有 id 和 name 两个属性,Params 有 query 一个属性。 + +以下是消费端的调用代码: + +```java +String[] parameterTypes = new String[]{"com.alibaba.dubbo.samples.generic.api.Params"}; +Map params = new HashMap(); +param.put("class", "com.alibaba.dubbo.samples.generic.api.Params"); +param.put("query", "a=b"); +Object user = userService.$invoke("get", parameterTypes, new Object[]{param}); +System.out.println("sample one result: " + user); +``` + +上述代码的输出结果为: + +```shell +sample one result: {name=charles, id=1, class=com.alibaba.dubbo.samples.generic.api.User} +``` + +这里,Dubbo 框架会自动将 POJO 的返回值转换成 Map。可以看到,返回值 `user` 是一个 HashMap,里面分别存放了 name、id、class 三个 k/v。 + + 泛接口实现 + +泛接口实现方式主要用于服务端没有 API 接口的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,如实现一个通用的远程服务 Mock 框架,可通过实现 GenericService 接口处理所有服务请求。 + +# 服务端实现 GenericService + +```java +public class GenericServiceImpl implements GenericService { +@Override +public Object $invoke(String method, String[] parameterTypes, Object[] args) throws GenericException { +if (method.equals("hi")) { +return "hi, " + args[0]; +} else if (method.equals("hello")) { +return "hello, " + args[0]; +} + +return "welcome"; +} +} +``` + +# 服务端暴露服务 + +```java +ApplicationConfig application = new ApplicationConfig(); +application.setName("api-generic-provider"); + +RegistryConfig registry = new RegistryConfig(); +registry.setAddress("zookeeper://127.0.0.1:2181"); + +application.setRegistry(registry); + +GenericService genericService = new GenericServiceImpl(); + +ServiceConfig service = new ServiceConfig(); +service.setApplication(application); +service.setInterface("com.alibaba.dubbo.samples.generic.api.HelloService"); +service.setRef(genericService); +service.export(); + +ServiceConfig service2 = new ServiceConfig(); +service2.setApplication(application); +service2.setInterface("com.alibaba.dubbo.samples.generic.api.HiService"); +service2.setRef(genericServi
[incubator-dubbo-website] branch asf-site updated: build
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 40bcee1 build 40bcee1 is described below commit 40bcee17793df20281bcb9b6edcbf1ed626f54f2 Author: zhuyong AuthorDate: Fri Aug 10 16:33:30 2018 +0800 build --- blog/zh-cn/dubbo-loadbalance.md| 265 ++ blog/zh-cn/dubbo-new-async.md | 556 + build/0d69326d69fd47b9d99a.js | 6 - ...8f548578cb3c9f5b.js => 5dfcc3831ea1057a5367.js} | 2 +- build/fca877d6ab8a5dbba7ca.js | 6 + build/page.js | 2 +- md_json/blog.json | 4 +- site_config/blog.js| 2 +- 8 files changed, 832 insertions(+), 11 deletions(-) diff --git a/blog/zh-cn/dubbo-loadbalance.md b/blog/zh-cn/dubbo-loadbalance.md index e69de29..65aa757 100644 --- a/blog/zh-cn/dubbo-loadbalance.md +++ b/blog/zh-cn/dubbo-loadbalance.md @@ -0,0 +1,265 @@ +# Dubbo的负载均衡 + +# 背景 + +Dubbo是一个分布式服务框架,能避免单点故障和支持服务的横向扩容。一个服务通常会部署多个实例。如何从多个服务提供者组成的集群中挑选出一个进行调用,就涉及到一个负载均衡的策略。 + +# 几个概念 + +在讨论负载均衡之前,我想先解释一下这3个概念。 + +1. 负载均衡 +2. 集群容错 +3. 服务路由 + +这3个概念容易混淆。他们都描述了怎么从多个Provider中选择一个来进行调用。那他们到底有什么区别呢?下面我来举一个简单的例子,把这几个概念阐述清楚吧。 + +有一个Dubbo的用户服务,在北京部署了10个,在上海部署了20个。一个杭州的服务消费方发起了一次调用,然后发生了以下的事情: + +1. 根据配置的路由规则,如果杭州发起的调用,会路由到比较近的上海的20个Provider。 +2. 根据配置的随机负载均衡策略。在20个Provider中随机选择了一个来调用,假设随机到了第7个Provider。 +3. 结果调用第7个Provider失败了。 +4. 根据配置的Failover集群容错模式,重试其他服务器。 +5. 重试了第13个Provider,调用成功。 + +上面的第1,2,4步骤就分别对应了路由,负载均衡和集群容错。 Dubbo中,先通过路由,从多个Provider中按照路由规则,选出一个子集。再根据负载均衡从子集中选出一个Provider进行本次调用。如果调用失败了,根据集群容错策略,进行重试或定时重发或快速失败等。 可以看到Dubbo中的路由,负载均衡和集群容错发生在一次RPC调用的不同阶段。最先是路由,然后是负载均衡,最后是集群容错。 本文档只讨论负载均衡,路由和集群容错在其他的文档中进行说明。 + +# Dubbo内置负载均衡策略 + +Dubbo内置了4种负载均衡策略: + +1. RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的**默认**负载均衡策略。 +2. RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。 +3. LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。 +4. ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。 + +### 1.随机负载均衡 + +顾名思义,随机负载均衡策略就是从多个Provider中随机选择一个。但是Dubbo中的随机负载均衡有一个权重的概念,即按照权重设置随机概率。比如说,有10个Provider,并不是说,每个Provider的概率都是一样的,而是要结合这10个provider的权重来分配概率。 + +Dubbo中,可以对Provider设置权重。比如机器性能好的,可以设置大一点的权重,性能差的,可以设置小一点的权重。权重会对负载均衡产生影响。可以在Dubbo Admin中对provider进行权重的设置。 + +**基于权重的负载均衡算法** + +随机策略会先判断所有的invoker的权重是不是一样的,如果都是一样的,那么处理就比较简单了。使用random.nexInt(length)就可以随机生成一个invoker的序号,根据序号选择对应的invoker。如果没有在Dubbo Admin中对服务提供者设置权重,那么所有的invoker的权重就是一样的,默认是100。 如果权重不一样,那就需要结合权重来设置随机概率了。算法大概如下: 假如有4个invoker + +| invoker | weight | +| --- | -- | +| A | 10 | +| B | 20 | +| C | 20 | +| D | 30 | + +A,B,C和D总的权重是10 + 20 + 20 + 30 = 80。将80个数分布在如下的图中: + +``` ++---+ +| ||| | ++---+ +1 10 30 50 80 + +|-A|-B--|--C-|---D--| + + +-15 + +---37 + +---54 +``` + +上面的图中一共有4块区域,长度分别是A,B,C和D的权重。使用random.nextInt(10 + 20 + 20 + 30),从80个数中随机选择一个。然后再判断该数分布在哪个区域。比如,如果随机到37,37是分布在C区域的,那么就选择inboker C。15是在B区域,54是在D区域。 + +**随机负载均衡源码** + +下面是随机负载均衡的源码,为了方便阅读和理解,我把无关部分都去掉了。 + +``` +public class RandomLoadBalance extends AbstractLoadBalance { + +private final Random random = new Random(); + +protected Invoker doSelect(List> invokers, URL url, Invocation invocation) { +int length = invokers.size(); // invoker总数 +int totalWeight = 0; // 所有invoker的权重的和 + +// 判断是不是所有的invoker的权重都是一样的 +// 如果权重都一样,就简单了。直接用Random生成索引就可以了。 +boolean sameWeight = true; +for (int i = 0; i < length; i++) { +int weight = getWeight(invokers.get(i), invocation); +totalWeight += weight; // Sum +if (sameWeight && i > 0 && weight != getWeight(invokers.get(i - 1), invocation)) { +sameWeight = false; +} +} + +if (totalWeight > 0 && !sameWeight) { +// 如果不是所有的invoker权重都相同,那么基于权重来随机选择。权重越大的,被选中的概率越大 +int offset = random.nextInt(totalWeight); +for (int i = 0; i < length; i++) { +offset -= getWeight(invokers.get(i), invocation); +if (offset < 0) { +return invokers.get(i); +} +} +} +//
[incubator-dubbo-website] branch asf-site updated: add blog
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 7e0e10f add blog 7e0e10f is described below commit 7e0e10fffb435624bead7df865c8ff5e1eb28483 Author: zhuyong AuthorDate: Fri Aug 10 16:39:53 2018 +0800 add blog --- blog/zh-cn/dubbo-integrate-with-hystrix.md | 201 + ...c3831ea1057a5367.js => 4828dc59b19c927e111e.js} | 4 +- build/654055e491fb5dea7da2.js | 6 + build/fca877d6ab8a5dbba7ca.js | 6 - build/page.js | 2 +- md_json/blog.json | 4 + site_config/blog.js| 7 + 7 files changed, 221 insertions(+), 9 deletions(-) diff --git a/blog/zh-cn/dubbo-integrate-with-hystrix.md b/blog/zh-cn/dubbo-integrate-with-hystrix.md new file mode 100644 index 000..34d9a2b --- /dev/null +++ b/blog/zh-cn/dubbo-integrate-with-hystrix.md @@ -0,0 +1,201 @@ +# Spring应用快速集成Dubbo + Hystrix + +## 背景 + +Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。 + +Dubbo是Alibaba开源的,目前国内最流行的java rpc框架。 + +本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用。 + +- <https://github.com/Netflix/Hystrix> +- <https://github.com/apache/incubator-dubbo> + +## Spring Boot应用 + +Demo地址: <https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-spring-boot-hystrix> + +### 生成dubbo集成spring boot的应用 + +对于不熟悉dubbo 集成spring boot应用的同学,可以在这里直接生成dubbo + spring boot的工程: <http://start.dubbo.io/> + +### 配置spring-cloud-starter-netflix-hystrix + +spring boot官方提供了对hystrix的集成,直接在pom.xml里加入依赖: + +``` + +org.springframework.cloud +spring-cloud-starter-netflix-hystrix +1.4.4.RELEASE + +``` + +然后在Application类上增加`@EnableHystrix`来启用hystrix starter: + +``` +@SpringBootApplication +@EnableHystrix +public class ProviderApplication { +``` + +### 配置Provider端 + +在Dubbo的Provider上增加`@HystrixCommand`配置,这样子调用就会经过Hystrix代理。 + +``` +@Service(version = "1.0.0") +public class HelloServiceImpl implements HelloService { +@HystrixCommand(commandProperties = { +@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"), +@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") }) +@Override +public String sayHello(String name) { +// System.out.println("async provider received: " + name); +// return "annotation: hello, " + name; +throw new RuntimeException("Exception to show hystrix enabled."); +} +} +``` + +### 配置Consumer端 + +对于Consumer端,则可以增加一层method调用,并在method上配置`@HystrixCommand`。当调用出错时,会走到`fallbackMethod = "reliable"`的调用里。 + +``` +@Reference(version = "1.0.0") +private HelloService demoService; + +@HystrixCommand(fallbackMethod = "reliable") +public String doSayHello(String name) { +return demoService.sayHello(name); +} +public String reliable(String name) { +return "hystrix fallback value"; +} +``` + +通过上面的配置,很简单地就完成了Spring Boot里Dubbo + Hystrix的集成。 + +## 传统Spring Annotation应用 + +Demo地址: <https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-spring-hystrix> + +传统spring annotation应用的配置其实也很简单,和spring boot应用不同的是: + +1. 显式配置Spring AOP支持:`@EnableAspectJAutoProxy` +2. 显式通过`@Configuration`配置`HystrixCommandAspect` Bean。 + +``` +@Configuration +@EnableDubbo(scanBasePackages = "com.alibaba.dubbo.samples.annotation.action") +@PropertySource("classpath:/spring/dubbo-consumer.properties") +@ComponentScan(value = {"com.alibaba.dubbo.samples.annotation.action"}) +@EnableAspectJAutoProxy +static public class ConsumerConfiguration { + +@Bean +public HystrixCommandAspect hystrixCommandAspect() { +return new HystrixCommandAspect(); +} +} +``` + +## Hystrix集成Spring AOP原理 + +在上面的例子里可以看到,Hystrix对Spring的集成是通过Spring AOP来实现的。下面简单分析下实现。 + +``` +@Aspect +public class HystrixCommandAspect { + @Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand)") +public void hystrixCommandAnnotationPointcut() { +} + @Pointcut("@annotation(com.netflix.hystrix.contrib.javanica.annotation.HystrixCollapser)") +public void hystrixCollapserAnnotationPointcut() { +} + +@Around("hystrixCommandAnnotationPointcut() || hystrixCollapserAnnotationPointcut()") +public Object methodsAnnotatedWithHystrixCommand(final ProceedingJoinPoint joinPoint) throws Throwable { +Method method = g
[incubator-dubbo-website] branch asf-site updated: build
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 9d6de5e build 9d6de5e is described below commit 9d6de5e08f17f3200c70b2f694c1eb5b208b2e53 Author: zhuyong AuthorDate: Fri Aug 10 16:17:52 2018 +0800 build --- build/0d69326d69fd47b9d99a.js | 6 ++ build/197de76506a1ddd84a4b.js | 6 -- build/364a8f548578cb3c9f5b.js | 6 ++ build/74188657de05e5b92cf4.js | 6 -- build/7533f0a0e44a4367de8b.js | 6 ++ build/87c67c0d7caf73d7e493.js | 6 -- build/8b66bddd9274404f5cad.js | 6 -- build/c3e013b93dbf5fac1c23.js | 6 ++ build/c5ce7257df274bc595ec.js | 6 -- build/e52128c6c5682a86685a.js | 6 ++ build/page.js | 2 +- md_json/blog.json | 14 +- 12 files changed, 44 insertions(+), 32 deletions(-) diff --git a/build/0d69326d69fd47b9d99a.js b/build/0d69326d69fd47b9d99a.js new file mode 100644 index 000..30ab02d --- /dev/null +++ b/build/0d69326d69fd47b9d99a.js @@ -0,0 +1,6 @@ +webpackJsonp([1],[function(s,n,e){"use strict";function a(s){return s&__esModule?s:{default:s}}function t(s,n){if(!(s instanceof n))throw new TypeError("Cannot call a class as a function")}function o(s,n){if(!s)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?s:n}function l(s,n){if("function"!=typeof n&!==n)throw new TypeError("Super expression must either be null or a function, not "+ [...] + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +!function(){"use strict";function e(){for(var s=[],n=0;nhttp://jedwatson.github.io/classnames -*/ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames +*/ +!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames -*/ -!function(){"use strict";function e(){for(var s=[],n=0;nhttp://jedwatson.github.io/classnames +*/ +!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames -*/ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames -*/ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames +*/ +!function(){"use strict";function a(){for(var s=[],n=0;nhttp://jedwatson.github.io/classnames -*/ -!function(){"use strict";function a(){for(var s=[],n=0;nhttp://jedwatson.github.io/classnames +*/ +!function(){"use strict";function n(){for(var e=[],t=0;t理解Apache发布的内容和流程\n总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。\n请参考以下链接,找到更多关于ASF的发布指南:\n\nhttp://www.apache.org/dev/release-publishing\;>Apache Release Guide\nhttp://www.apache.org/dev/release.html\;>Apache Release Policy\nhttp://www.apache.org/dev/publishing-maven-artifacts.html\;>Maven Release Info\n\n本地构建环 [...] + "__html": "理解Apache发布的内容和流程\n总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。\n请参考以下链接,找到更多关于ASF的发布指南:\n\nhttp://www.apache.org/dev/release-publishing\;>Apache Release Guide\nhttp://www.apache.org/dev/release.html\;>Apache Release Policy\nhttp://www.apache.org/dev/publishing-maven-artifacts.html\;>Maven Release Info\n\n本地构建环 [...] }, { "filename": "dubbo-101.md", @@ -17,14 +17,26 @@ "__html": "Dubbo基本用法-Dubbo Provider配置\nDubbo基本用法\n本章节主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。\n按照功能角度进行划分,可以分为Dubbo Provider和Dubbo Consumer。接下来章节中,分别对dubbo provider和Dubbo consumer进行讲解。\nDubbo Provider配置\nProvider 配置详解\n配置Dubbo Provider有4种方式:XML配置,properties方式配置,API调用方式配置,注解方式配置。\nXML配置\n最简单的配置的样例:\n?xml version=1.0 encoding=UTF-8?\nbeans xmlns [...] }, { + "filename": "dubbo-generic-invoke.md", + "__html": "Dubbo的泛化调用\n以下几种场景可以考虑使用泛化调用:\n\n服务测试平台\nAPI 服务网关\n\n泛化调用主要用于消费端没有 API 接口的情况;不需要引入接口 jar 包,而是直接通过 GenericService 接口来发起服务调用,参数及返回值中的所有 POJO 均用 Map 表示。泛化调用对于服务端无需关注,按正常服务进行暴露即可。\n下面来看看消费端如何使用泛化调用进行服务调用。\n通过 Spring XML 配置进行泛化调用\n在 Spring 配置申明 generic=true,如:\ndubbo:referenceDubbo 关于同步/异步调用的几种方式\n我们知道,Dubbo 缺省协议采用单一长连接,底层实现是 Netty 的 NIO 异步通讯机制;基于这种机制,Dubbo 实现了以下几种调用方式:\n\n同步调用\n异步调用\n参数回调\n事件通知\n\n同步调用\n同步调用是一种阻塞式的调用方式,即 Consumer 端代码一直阻塞等待,直到 Provider 端返回为止;\n通常,一个典型的同步调用过程如下:\n\nConsumer 业务线程调用远程接口,向 Provider 发送请求,同时当前线程处于阻塞状态;\nProvider 接到 Consumer 的请求后,开始处理请求,将结果返回给 Consumer;\nConsumer 收到结果
[incubator-dubbo] branch 2.6.x updated: Fixes #2136, replace hard coded hessian-lite version with mavne property. (#2223)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new bbfcb41 Fixes #2136, replace hard coded hessian-lite version with mavne property. (#2223) bbfcb41 is described below commit bbfcb4124fad0380f9de5a2a7cba65958c2a90b0 Author: ken.lj AuthorDate: Fri Aug 10 10:59:44 2018 +0800 Fixes #2136, replace hard coded hessian-lite version with mavne property. (#2223) --- all/pom.xml | 2 -- bom/pom.xml | 5 - distribution/pom.xml| 1 - dubbo-common/pom.xml| 1 - dubbo-serialization/dubbo-serialization-jdk/pom.xml | 1 - dubbo-test/pom.xml | 1 - 6 files changed, 11 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index afc1ed6..f277d3b 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -29,7 +29,6 @@ The all in one project of dubbo false -3.2.3 @@ -329,7 +328,6 @@ com.alibaba hessian-lite -${hessian_lite_version} compile true diff --git a/bom/pom.xml b/bom/pom.xml index 66c14d4..3e34aba 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -281,11 +281,6 @@ dubbo-serialization-kryo ${project.version} - -com.alibaba -hessian-lite -${hessian_lite_version} - diff --git a/distribution/pom.xml b/distribution/pom.xml index b8590e7..7b33386 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -243,7 +243,6 @@ com.alibaba hessian-lite -3.2.3 diff --git a/dubbo-common/pom.xml b/dubbo-common/pom.xml index a14dc32..2f3867b 100644 --- a/dubbo-common/pom.xml +++ b/dubbo-common/pom.xml @@ -50,7 +50,6 @@ com.alibaba hessian-lite -3.2.3 com.alibaba diff --git a/dubbo-serialization/dubbo-serialization-jdk/pom.xml b/dubbo-serialization/dubbo-serialization-jdk/pom.xml index 2b0fd3a..527dbcf 100644 --- a/dubbo-serialization/dubbo-serialization-jdk/pom.xml +++ b/dubbo-serialization/dubbo-serialization-jdk/pom.xml @@ -38,7 +38,6 @@ limitations under the License. com.alibaba hessian-lite -3.2.3 \ No newline at end of file diff --git a/dubbo-test/pom.xml b/dubbo-test/pom.xml index 7505067..7d044d7 100644 --- a/dubbo-test/pom.xml +++ b/dubbo-test/pom.xml @@ -179,7 +179,6 @@ com.alibaba hessian-lite -3.2.3 com.alibaba
[incubator-dubbo] branch 2.6.3-release updated: complete LICENSE for test xml, fix checkstyle problem
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.3-release in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.3-release by this push: new b6b5415 complete LICENSE for test xml, fix checkstyle problem b6b5415 is described below commit b6b5415068a4d97e5f2d1ce0845232aae9acefba Author: zhuyong AuthorDate: Fri Aug 24 15:23:52 2018 +0800 complete LICENSE for test xml, fix checkstyle problem --- all/pom.xml| 29 -- .../alibaba/dubbo/rpc/cluster/RouterFactory.java | 5 ++-- .../dubbo/common/concurrent/ListenableFuture.java | 3 +-- .../src/test/resources/applicationContext.xml | 16 .../test/resources/webapps/test/WEB-INF/web.xml| 16 .../test/resources/webapps/test2/WEB-INF/web.xml | 16 .../test/resources/webapps/test3/WEB-INF/web.xml | 16 .../java/com/alibaba/dubbo/registry/Registry.java | 3 +-- .../com/alibaba/dubbo/remoting/Transporter.java| 6 ++--- .../com/alibaba/dubbo/rpc/InvokerListener.java | 3 +-- pom.xml| 15 +++ 11 files changed, 74 insertions(+), 54 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 68e28d8..e39b85c 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -548,35 +548,6 @@ - -maven-javadoc-plugin -${maven_javadoc_version} - - -attach-javadoc - -jar - - -none - - - - -true - - com.alibaba:dubbo-* - com.alibaba:hessian-* - -public -UTF-8 -UTF-8 -UTF-8 - -http://docs.oracle.com/javase/7/docs/api - - - \ No newline at end of file diff --git a/dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java b/dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java index 35e57a7..468cdd6 100644 --- a/dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java +++ b/dubbo-cluster/src/main/java/com/alibaba/dubbo/rpc/cluster/RouterFactory.java @@ -19,15 +19,14 @@ package com.alibaba.dubbo.rpc.cluster; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.extension.Adaptive; import com.alibaba.dubbo.common.extension.SPI; -import com.alibaba.dubbo.rpc.Invocation; /** * RouterFactory. (SPI, Singleton, ThreadSafe) * * http://en.wikipedia.org/wiki/Routing;>Routing * - * @see com.alibaba.dubbo.rpc.cluster.Cluster#join(Directory) - * @see com.alibaba.dubbo.rpc.cluster.Directory#list(Invocation) + * @see Cluster#join(Directory) + * @see Directory#list(com.alibaba.dubbo.rpc.Invocation) */ @SPI public interface RouterFactory { diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/concurrent/ListenableFuture.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/concurrent/ListenableFuture.java index c79454e..91f2f46 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/concurrent/ListenableFuture.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/concurrent/ListenableFuture.java @@ -17,7 +17,6 @@ package com.alibaba.dubbo.common.concurrent; import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.FutureTask; import java.util.concurrent.RejectedExecutionException; @@ -66,7 +65,7 @@ import java.util.concurrent.RejectedExecutionException; * * If they are returned from an {@code ExecutorService}, convert that * service to a {@link ListeningExecutorService}, usually by calling {@link - * MoreExecutors#listeningDecorator(ExecutorService) + * MoreExecutors#listeningDecorator(java.util.concurrent.ExecutorService) * MoreExecutors.listeningDecorator}. (Custom executors may find it more * convenient to use {@link ListenableFutureTask} directly.) * If they are manually filled in by a call to {@link FutureTask#set} or a diff --git a/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml b/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml index 977a8a4..5c9f657 100644 --- a/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml +++ b/dubbo-config/dubbo-config-spring/src/test/resources/applicationContext.xml @@ -1,4 +1
[incubator-dubbo] branch master updated: New ascii logo. (#2395)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new ff373a7 New ascii logo. (#2395) ff373a7 is described below commit ff373a7db7645ea1b55bf84150d0326d1e999b78 Author: 时无两丶 <442367...@qq.com> AuthorDate: Tue Aug 28 18:06:49 2018 +0800 New ascii logo. (#2395) --- .../main/java/org/apache/dubbo/qos/server/DubboLogo.java | 16 +--- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/DubboLogo.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/DubboLogo.java index e25613a..b504cbf 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/DubboLogo.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/server/DubboLogo.java @@ -17,15 +17,9 @@ package org.apache.dubbo.qos.server; public class DubboLogo { -public static String dubbo = -" ▄ ████▄ ▀█▄ ▀█▄ ▄██▄ \n" + -" ███ ▀███ ██████ ██████ ██████ ███ ███ \n" + -" ██████ ██████ ██████ ██████ ███ ███ \n" + -" ██████ ██████ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ \n" + -" ██████ ██████ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███ \n" + -" ██████ ██████ █████▄ █████▄ ███ ███ \n" + -" ███ ▄███ ██████ ██████ ██████ ███ ███ \n" + -" ▀ ▀ ▄█▀ ▄█▀ ▀██▀ \n" + -" \n" + -"\n"; +public static final String dubbo = +" ___ __ __ ___ ___ \n" + +" / _ \\ / / / // _ ) / _ ) / __ \\ \n" + +" / // // /_/ // _ |/ _ |/ /_/ /\n" + +"// \\///// \\/ \n"; }
[incubator-dubbo] branch master updated (5f8adf0 -> 86d7347)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. from 5f8adf0 Enable checkstyle and rat plugin for travis CI (#2393) add 86d7347 typo: prvoiderService->providerService; connectSkiped->connectSkipped (#2396) No new revisions were added by this update. Summary of changes: .../java/org/apache/dubbo/registry/redis/RedisRegistry.java | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-)
[incubator-dubbo] branch 2.6.x updated: New ascii logo for 2.6.x (#2402)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new ba51bab New ascii logo for 2.6.x (#2402) ba51bab is described below commit ba51bab3955e7fc872042bac800771ffdf05c7f6 Author: 时无两丶 <442367...@qq.com> AuthorDate: Wed Aug 29 18:13:03 2018 +0800 New ascii logo for 2.6.x (#2402) --- .../java/com/alibaba/dubbo/qos/server/DubboLogo.java | 16 +--- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/server/DubboLogo.java b/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/server/DubboLogo.java index c5bec0c..6dabdcf 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/server/DubboLogo.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/server/DubboLogo.java @@ -17,15 +17,9 @@ package com.alibaba.dubbo.qos.server; public class DubboLogo { -public static String dubbo = -" ▄ ████▄ ▀█▄ ▀█▄ ▄██▄ \n" + -" ███ ▀███ ██████ ██████ ██████ ███ ███ \n" + -" ██████ ██████ ██████ ██████ ███ ███ \n" + -" ██████ ██████ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███ \n" + -" ██████ ██████ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███ \n" + -" ██████ ██████ █████▄ █████▄ ███ ███ \n" + -" ███ ▄███ ██████ ██████ ██████ ███ ███ \n" + -" ▀ ▀ ▄█▀ ▄█▀ ▀██▀ \n" + -" \n" + -"\n"; +public static final String dubbo = +" ___ __ __ ___ ___ \n" + +" / _ \\ / / / // _ ) / _ ) / __ \\ \n" + +" / // // /_/ // _ |/ _ |/ /_/ /\n" + +"// \\///// \\/ \n"; }
[incubator-dubbo] branch master updated (64f4adb -> e723ad3)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. from 64f4adb replace the method httpclient which is annotated with “@Deprecated” (#2103) add e723ad3 fix #2134 upgrade httpcore to 4.4.6 (#2319) No new revisions were added by this update. Summary of changes: dubbo-dependencies-bom/pom.xml | 6 ++ 1 file changed, 6 insertions(+)
[incubator-dubbo] branch master updated: Update several documentation links (#2354)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new b4db875 Update several documentation links (#2354) b4db875 is described below commit b4db875f30a624e9f8a376189075c1ee59693837 Author: Yuhao Bi AuthorDate: Tue Aug 28 09:52:57 2018 +0800 Update several documentation links (#2354) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ffb16af..e5d2f68 100644 --- a/README.md +++ b/README.md @@ -109,9 +109,9 @@ public class Consumer { ### Next steps -* [Dubbo user manual](http://dubbo.apache.org/#/docs/user/preface/background.md) - How to use Dubbo and all its features. -* [Dubbo developer guide](http://dubbo.apache.org/#/docs/dev/build.md) - How to invovle in Dubbo development. -* [Dubbo admin manual](http://dubbo.apache.org/#/docs/admin/install/provider-demo.md) - How to admin and manage Dubbo services. +* [Dubbo user manual](http://dubbo.apache.org/en-us/docs/user/preface/background.html) - How to use Dubbo and all its features. +* [Dubbo developer guide](http://dubbo.apache.org/en-us/docs/dev/build.html) - How to invovle in Dubbo development. +* [Dubbo admin manual](http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html) - How to admin and manage Dubbo services. ## Contact
[incubator-dubbo] branch master updated: Enable checkstyle and rat plugin for travis CI (#2393)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 5f8adf0 Enable checkstyle and rat plugin for travis CI (#2393) 5f8adf0 is described below commit 5f8adf0f20c2e1823be64eb0bbe42d4ca38401d7 Author: Jerrick Zhu AuthorDate: Tue Aug 28 15:38:00 2018 +0800 Enable checkstyle and rat plugin for travis CI (#2393) --- .travis.yml | 2 +- .../java/org/apache/dubbo/rpc/cluster/RouterFactory.java | 3 +-- .../main/java/org/apache/dubbo/remoting/Transporter.java | 6 ++ .../main/java/org/apache/dubbo/rpc/InvokerListener.java | 3 +-- .../rpc/protocol/hessian/HttpClientConnectionFactory.java | 3 --- pom.xml | 15 +++ 6 files changed, 8 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index fe60e30..26e0783 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ cache: install: true script: - - travis_wait 30 ./mvnw clean package -DskipTests=false -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true + - travis_wait 30 ./mvnw clean install -DskipTests=false -Dcheckstyle.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java index 679b9fe..c81ba54 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterFactory.java @@ -19,7 +19,6 @@ package org.apache.dubbo.rpc.cluster; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.extension.Adaptive; import org.apache.dubbo.common.extension.SPI; -import org.apache.dubbo.rpc.Invocation; /** * RouterFactory. (SPI, Singleton, ThreadSafe) @@ -27,7 +26,7 @@ import org.apache.dubbo.rpc.Invocation; * http://en.wikipedia.org/wiki/Routing;>Routing * * @see org.apache.dubbo.rpc.cluster.Cluster#join(Directory) - * @see org.apache.dubbo.rpc.cluster.Directory#list(Invocation) + * @see org.apache.dubbo.rpc.cluster.Directory#list(org.apache.dubbo.rpc.Invocation) */ @SPI public interface RouterFactory { diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Transporter.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Transporter.java index b53c75f..33ac2be 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Transporter.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/Transporter.java @@ -21,8 +21,6 @@ import org.apache.dubbo.common.URL; import org.apache.dubbo.common.extension.Adaptive; import org.apache.dubbo.common.extension.SPI; -import javax.sound.midi.Receiver; - /** * Transporter. (SPI, Singleton, ThreadSafe) * @@ -41,7 +39,7 @@ public interface Transporter { * @param handler * @return server * @throws RemotingException - * @see org.apache.dubbo.remoting.Transporters#bind(URL, Receiver, ChannelHandler) + * @see org.apache.dubbo.remoting.Transporters#bind(URL, ChannelHandler...) */ @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY}) Server bind(URL url, ChannelHandler handler) throws RemotingException; @@ -53,7 +51,7 @@ public interface Transporter { * @param handler * @return client * @throws RemotingException - * @see org.apache.dubbo.remoting.Transporters#connect(URL, Receiver, ChannelListener) + * @see org.apache.dubbo.remoting.Transporters#connect(URL, ChannelHandler...) */ @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY}) Client connect(URL url, ChannelHandler handler) throws RemotingException; diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/InvokerListener.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/InvokerListener.java index 6842dd8..5516b07 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/InvokerListener.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/InvokerListener.java @@ -16,7 +16,6 @@ */ package org.apache.dubbo.rpc; -import org.apache.dubbo.common.URL; import org.apache.dubbo.common.extension.SPI; /** @@ -30,7 +29,7 @@ public interface InvokerListener { * * @param invoker * @throws RpcException - * @see org.apache.dubbo.rpc.Protocol#refer(Class, URL) + * @see org.apache.dubbo.rpc.Protocol#refer(Class, org.apache.dubbo.common.URL) */ void referred(Invoker invoker) throws RpcException; diff --git a/dubbo-rpc/dubbo-rpc-hessian/src/mai
[incubator-dubbo-website] branch asf-site updated: new post dubbo-contribue-to-opensource (#122)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new e48880e new post dubbo-contribue-to-opensource (#122) e48880e is described below commit e48880ef34567559664dc25b7bfb8afbc88da3db Author: xujingfeng <250577...@qq.com> AuthorDate: Tue Aug 28 15:47:33 2018 +0800 new post dubbo-contribue-to-opensource (#122) --- blog/zh-cn/dubbo-contribue-to-opensource.md | 190 site_config/blog.js | 7 + 2 files changed, 197 insertions(+) diff --git a/blog/zh-cn/dubbo-contribue-to-opensource.md b/blog/zh-cn/dubbo-contribue-to-opensource.md new file mode 100644 index 000..384062d --- /dev/null +++ b/blog/zh-cn/dubbo-contribue-to-opensource.md @@ -0,0 +1,190 @@ +以Dubbo为例,聊聊如何向开源项目做贡献 +--- + +Github 上有众多优秀的开源项目,大多数 IT 从业者将其当做了予取予求的工具库,遇到什么需求,先去 Github 搜一把,但有没有想过有一天自己也可以给开源事业做一些贡献呢?本文将会以 incubator-dubbo 项目为例,向你阐释,给开源项目做贡献并不是一件难事。 + +### 1 为何要给开源贡献力量 + +为开源项目做贡献得到的收益是多方面的,为了让你有足够的信心加入到开源项目中,我在文章最开始列举出它的诸多好处。 + + 1.1 巩固技能 + +无论你是提交代码,撰写文档,提交 Issue,组织活动,当你切身参与到一个开源项目中,相关的技能都会得到历练,并且在开源项目中找到自己的位置。一方面,日常工作中我们中的大多数人接触到的是业务场景,并没有太多机会接触到基础架构组件,开源项目为我们提供了一个平台,在这里,你可以尽情挑选自己熟悉的项目为它添砖加瓦(以 Dubbo 为例,并不是所有 IT 公司都有能力自研服务治理框架);另一方面,你所提交的代码,会有管理员协助审核,他们会给出专业的建议,更好的代码规范以及更优的编程思路最终都会变成你的经验。 + + 1.2 结交朋友 + +开源社区为你提供了一个平台,在这里,你可以认识很多纯粹的技术爱好者,开源贡献者是最符合 geek 定义的那群人,你所接触到的往往是某个领域最厉害的那批人。 + + 1.3 建立口碑 + +这是一个很好的展示个人实力的地方,俗话说:talk is cheap,show me the code. 作为技术人员,没有什么比一个漂亮的 Github 主页更有说服力的了。如果你能够为开源项目做出可观的贡献,你也将收获到业界的知名度,此时开源项目的成就和你是密不可分的。 + + 1.4 传承开源精神 + +只有源源不断的贡献者给开源项目添砖加瓦,才可以为 Github 一类的开源社区形成良好的开源风气。否则,只有输出没有输入,开源会失去活力。 + + 1.5 养成习惯 + +相信我,一旦养成了每天提交代码的习惯,就像你不想中断打卡一样,你绝不想中断 commit。不止有英语打卡,健身打卡,还有开源打卡! + +![开源程序员的日常](http://ov0zuistv.bkt.clouddn.com/image-20180827141007663.png) + +### 2 贡献代码时的一些疑难杂症 + +如果你是一名开源界的新手,可能会对贡献的流程心生畏惧。比如:我该怎么修改代码并提交?我的代码要是存在bug怎么办?我的代码别人会不会很 low?我该如何寻找合适的开源项目?开源社区那么多的工具和词汇都是什么意思? + +文章的第二部分将从一个**小白**的角度,介绍一下开源中的一些常见问题。 + + 2.1 git 常规操作 + +一般而言,我们选择使用 git 来作为版本管理的工具,你不一定要非常熟练的使用它,在我看来掌握 clone,add,commit,pull,push 即可,遇到复杂的场景,你还有谷歌。 + +**fork 与 clone** + +![fork 与 clone](http://ov0zuistv.bkt.clouddn.com/image-20180827143942178.png) + +如果你只是想下载源码,查看他的源码实现,使用 Clone or download 按钮即可。 + +如果你想要给开源项目做改动,并且最终请求合并,让开源项目存在你贡献的代码,就应该使用 fork。 + +fork 将会复制一份当前主分支的代码进入到你的仓库中,之后你所有的修改,应当基于自己的仓库进行,在功能开发/bug 修复之后,可以使用你的仓库向源仓库提交 pull request。只有源仓库的管理员才有权利合并你的请求。 + +一些可能对你有帮助的高级指令。 + +```shell +# 设置源仓库 +git remote add upstream https://github.com/apache/incubator-dubbo.git +# 拉取源仓库的更新 +git fetch upstream +# 将自己仓库的主分支合并源仓库的更新 +git checkout master +git merge upstream/master +``` + +**pull request** + +![pull request](http://ov0zuistv.bkt.clouddn.com/image-20180827150703869.png) + +pull request 经常被缩写为 PR,指的是一次向源仓库请求合并的行为,如上是我 fork 了 incubator-dubbo 的仓库之后才存在的操作按钮。 + +**源仓库视角的 pull request** + +![pull request management](http://ov0zuistv.bkt.clouddn.com/image-20180827155239155.png) + +管理者会对 pull request 涉及的改动进行 review,以确保你的代码是符合规范的,逻辑有没有偏差,以及符合框架的功能需求。 + + 2.2 Travis CI + +一些自动化的 CI 流程被植入在每一次 pull request 的构建之中,用于给开源仓库去校验提交者的代码是否符合既定的规范,如:是否有编译问题,单元测试是否通过,覆盖率是否达标,代码风格是否合规等等。 + +![CI报告](http://ov0zuistv.bkt.clouddn.com/image-20180827160503114.png) + +一般情况下,必须通过 CI,你的 pull request 才会被管理 review。 + + 2.3 Mailing list + +每个开源项目都会有自己的贡献规范,可以参考首页的 Contributing,来获取具体的信息。incubator-dubbo 作为一个孵化中的 apache 项目,遵守了 apache 的传统,在 [Contributing](https://github.com/apache/incubator-dubbo/blob/master/CONTRIBUTING.md) 中描述道:当你有新特性想要贡献给 Dubbo 时,官方推荐使用 Mailing list 的方式描述一遍你想要做的改动。 + +Mailing list 简单来说,就是一个邮件通知机制,所有的 Dubbo 开发者都会订阅该邮箱:d...@dubbo.incubator.apache.org。有任何新特性的改动,或者什么建议想要通知其他开发者,都可以通过向该邮箱发送邮件来达到这个目的,相同地,你也会收到其转发的其他开发者的邮件。 + +或者你是一个 Dubbo 的使用者,你想要得知开发者的改造方向,也可以订阅,这个[指南](https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide)可以帮助你订阅 Dubbo 的 Mailing list。 + +> 作为一个 modern developer,你可能觉得 mailing list 的交流方式存在滞后性,这样的沟通方式不是特别的高效,但它作为 apache 项目的推荐交流方式存在其特殊的原因,在此不多赘述。总之遵循一个原则:bug fix或者讨论,可以在 github issue 中进行,影响较大的特性和讨论则推荐在 mailing list 中展开。 + +### 3 其他贡献形式 + +不仅仅只有贡献代码,修复 bug 等行为才算作为开源做贡献,以下这些行为也属于主要形式: + + 3.1 撰写文档 + + [Dubbo文档](http://dubbo.apache.org/zh-cn/)是其开源组成成分的重要一环,其内容源文件位于:https://github.com/apache/incubator-dubbo-website。同样也是一个 Git 仓库,任何你想要对 dubbo 知识点的补充,都可以在这儿提交 pull request,只需要一些 markdown 的语法知识,和一些可有可无的 npm 语法即可。如果你觉得贡献代码对于现在的自己仍然有点难度,不妨从贡献文档开始接触开源。 + + 3.2 ISSUE + +无论是 Github 中的 Issue 还是 mailing list 中的讨论,无论是提出问题,汇报 bug,还是回答问题(bugfix 则不仅仅需要 Issue 了),协助管理者 review pull request,都是贡献的一种形式,勿以善小而不为。 + + 3.3 其他行为 + +任何你能够想到的,可以帮助开源项目变得更好的的行为,都属于开源贡献。例如,给每个 Issue 打上合适的 tag,关闭重复的 Issue,链接相关联的 Issue,线下组织沙龙,回答 Stack Overflow 上相关的问题,以及文档中一个错别字的修改等等。 + +### 4 开源最佳实践 + + 4.1 有效沟通 + +无论你处于什么样的目的:仅仅是一次性的贡献,亦或是永久性的加入社区,都的和他人进行沟通和交往,这是你要在开源圈发展必须修炼的技能。 + +在你开启一个isse或PR之前,或者是在聊天室问问题之前,请
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 560b6b2 build site 560b6b2 is described below commit 560b6b28dc2397e304bf0418cd47ffc45e442701 Author: zhuyong AuthorDate: Tue Aug 28 15:49:36 2018 +0800 build site --- build/blog.js | 6 +- build/blogDetail.js | 6 +- build/community.js| 6 +- build/documentation.js| 6 +- build/home.js | 6 +- en-us/blog/dubbo-k8s.html | 34 ++ en-us/blog/dubbo-k8s.json | 4 + en-us/docs/user/rest.html | 36 ++ en-us/docs/user/rest.json | 4 + zh-cn/blog/dubbo-contribue-to-opensource.html | 157 ++ zh-cn/blog/dubbo-contribue-to-opensource.json | 4 + zh-cn/blog/dubbo-k8s.html | 121 zh-cn/blog/dubbo-k8s.json | 4 + zh-cn/blog/index.html | 2 +- 14 files changed, 380 insertions(+), 16 deletions(-) diff --git a/build/blog.js b/build/blog.js index 90fa697..0627aab 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] - Copyright (c) 2016 Jed Watson. +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t + + + + + + + + + dubbo-k8s + + + + + 中DisclaimerApache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubatio [...] + https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"</a>;> + https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;> + + window.rootPath = ''; + + + + https://www.googletagmanager.com/gtag/js?id=UA-112489517-1"</a>;> + + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + + gtag('config', 'UA-112489517-1'); + + + \ No newline at end of file diff --git a/en-us/blog/dubbo-k8s.json b/en-us/blog/dubbo-k8s.json new file mode 100644 index 000..9bfa5ef --- /dev/null +++ b/en-us/blog/dubbo-k8s.json @@ -0,0 +1,4 @@ +{ + "filename": "dubbo-k8s.md", + "__html": "Part 1\nPart 2\n" +} \ No newline at end of file diff --git a/en-us/docs/user/rest.html b/en-us/docs/user/rest.html new file mode 100644 index 000..678eaca --- /dev/null +++ b/en-us/docs/user/rest.html @@ -0,0 +1,36 @@ + + + + + + + + + + rest + + + + + 中DisclaimerApache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incuba [...] + https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"</a>;> + https://f.alicdn.com/react/15.4.1/react-dom.min.js"</a>;> + + window.rootPath = ''; + + + + https://www.googletagmanager.c
[incubator-dubbo] branch master updated: fix travis cov (#2337)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new f720ccb fix travis cov (#2337) f720ccb is described below commit f720ccb965d490e6cc328af8d3e9820cb6eaf8f7 Author: Jerrick Zhu AuthorDate: Thu Aug 23 16:37:08 2018 +0800 fix travis cov (#2337) --- .travis.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3e5e249..fe60e30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,11 +10,10 @@ cache: directories: - '$HOME/.m2/repository' -install: - - ./mvnw clean install -DskipTests=true -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true +install: true script: - - travis_wait 30 ./mvnw test + - travis_wait 30 ./mvnw clean package -DskipTests=false -Dcheckstyle.skip=true -Drat.skip=true -Dmaven.javadoc.skip=true after_success: - bash <(curl -s https://codecov.io/bash)
[incubator-dubbo.wiki] branch master updated: Created Website Guide (markdown)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.wiki.git The following commit(s) were added to refs/heads/master by this push: new 199c2a3 Created Website Guide (markdown) 199c2a3 is described below commit 199c2a39ee1027d7dcf39a3c65943776cd2c1997 Author: Jerrick Zhu AuthorDate: Thu Aug 23 20:48:57 2018 +0800 Created Website Guide (markdown) --- Website-Guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Website-Guide.md b/Website-Guide.md new file mode 100644 index 000..7bbef05 --- /dev/null +++ b/Website-Guide.md @@ -0,0 +1,2 @@ +1. The website repository of Apache Dubbo(incubating) is https://github.com/apache/incubator-dubbo-website +2. After building the website, it'll be published to dubbo.apache.org automatically, you can also trigger it manually via https://selfserve.apache.org (need to login with Apache account)
[incubator-dubbo.wiki] branch master updated: Updated _Sidebar (markdown)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.wiki.git The following commit(s) were added to refs/heads/master by this push: new ea23eed Updated _Sidebar (markdown) ea23eed is described below commit ea23eed4bd7ce0026e443f6774e4a97e20587501 Author: Jerrick Zhu AuthorDate: Thu Aug 23 18:22:22 2018 +0800 Updated _Sidebar (markdown) --- _Sidebar.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_Sidebar.md b/_Sidebar.md index f35d39e..ee8605d 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -10,5 +10,6 @@ * Committer Guide * [[New Committer Guide|New-Committer-Guide]] * [[Label an Issue|Label-an-Issue]] +* [[Website Guide|website-guide]] * Release Notes * Community
[incubator-dubbo-website] branch asf-site updated: add English blog title
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new ccdd1e8 add English blog title ccdd1e8 is described below commit ccdd1e8f8ecee3fd9c9ff08bd3444a6513d99096 Author: zhuyong AuthorDate: Wed Sep 5 08:57:35 2018 +0800 add English blog title --- en-us/blog/dubbo-101.html | 6 +-- en-us/blog/dubbo-101.json | 5 ++- en-us/blog/dubbo-annotation.html | 6 +-- en-us/blog/dubbo-annotation.json | 5 ++- ...o-basic-usage-dubbo-provider-configuration.html | 8 ++-- ...o-basic-usage-dubbo-provider-configuration.json | 5 ++- en-us/blog/dubbo-generic-invoke.html | 6 +-- en-us/blog/dubbo-generic-invoke.json | 5 ++- en-us/blog/dubbo-invoke.html | 6 +-- en-us/blog/dubbo-invoke.json | 5 ++- en-us/blog/dubbo-k8s.html | 38 +- en-us/blog/dubbo-k8s.json | 5 ++- en-us/blog/dubbo-loadbalance.html | 6 +-- en-us/blog/dubbo-loadbalance.json | 5 ++- en-us/blog/dubbo-meetup-beijing-may-12th-2018.html | 6 +-- en-us/blog/dubbo-meetup-beijing-may-12th-2018.json | 5 ++- .../blog/dubbo-meetup-shanghai-jun-23rd-2018.html | 6 +-- .../blog/dubbo-meetup-shanghai-jun-23rd-2018.json | 5 ++- en-us/blog/dubbo-new-async.html| 8 ++-- en-us/blog/dubbo-new-async.json| 5 ++- en-us/blog/dubbo-zk.html | 6 +-- en-us/blog/dubbo-zk.json | 5 ++- en-us/blog/dubbo2-js.html | 8 ++-- en-us/blog/dubbo2-js.json | 5 ++- en-us/blog/introduction-to-dubbo-qos.html | 6 +-- en-us/blog/introduction-to-dubbo-qos.json | 5 ++- en-us/blog/introduction-to-dubbo-spi-2.html| 6 +-- en-us/blog/introduction-to-dubbo-spi-2.json| 5 ++- en-us/blog/introduction-to-dubbo-spi.html | 8 ++-- en-us/blog/introduction-to-dubbo-spi.json | 5 ++- en-us/blog/pinpoint.html | 6 +-- en-us/blog/pinpoint.json | 5 ++- en-us/blog/prepare-an-apache-release.html | 4 +- en-us/blog/prepare-an-apache-release.json | 4 +- en-us/blog/sentinel-introduction-for-dubbo.html| 6 +-- en-us/blog/sentinel-introduction-for-dubbo.json| 5 ++- .../spring-boot-dubbo-start-stop-analysis.html | 6 +-- .../spring-boot-dubbo-start-stop-analysis.json | 5 ++- en-us/blog/tracing-with-skywalking.html| 6 +-- en-us/blog/tracing-with-skywalking.json| 5 ++- zh-cn/blog/dubbo-k8s.html | 46 +++--- zh-cn/blog/dubbo-k8s.json | 4 +- .../blog/dubbo-meetup-shanghai-jun-23rd-2018.html | 6 +-- .../blog/dubbo-meetup-shanghai-jun-23rd-2018.json | 5 ++- zh-cn/blog/dubbo-meetup-shenzhen.html | 6 +-- zh-cn/blog/dubbo-meetup-shenzhen.json | 5 ++- zh-cn/blog/introduction-to-dubbo-spi-2.html| 2 +- zh-cn/blog/introduction-to-dubbo-spi-2.json| 3 +- .../spring-boot-dubbo-start-stop-analysis.html | 2 +- .../spring-boot-dubbo-start-stop-analysis.json | 3 +- zh-cn/blog/tracing-with-skywalking.html| 2 +- zh-cn/blog/tracing-with-skywalking.json| 3 +- zh-cn/docs/user/demos/explicit-target.html | 4 +- zh-cn/docs/user/demos/explicit-target.json | 2 +- zh-cn/docs/user/maturity.html | 4 +- zh-cn/docs/user/maturity.json | 2 +- 56 files changed, 212 insertions(+), 144 deletions(-) diff --git a/en-us/blog/dubbo-101.html b/en-us/blog/dubbo-101.html index 54cffa6..d8d167e 100644 --- a/en-us/blog/dubbo-101.html +++ b/en-us/blog/dubbo-101.html @@ -4,10 +4,10 @@ - - + + - dubbo-101 + Your First Dubbo Demo diff --git a/en-us/blog/dubbo-101.json b/en-us/blog/dubbo-101.json index 11284ad..99bbcf8 100644 --- a/en-us/blog/dubbo-101.json +++ b/en-us/blog/dubbo-101.json @@ -1,4 +1,7 @@ { "filename": "dubbo-101.md", - "__html": "Your First Dubbo Demo\nJava RMI Introduction\nJava RMI (Remote Method Invocation) is a mechanism that allows users to access or invocate an object and a method running on another JVM (Java Virtual Machine). RMI is an implementation of RPC (Remote Procedure Call) in java with support of OOP (Object Oriented Paradigms). Instead of bothering IDL (Interface Define Language), users can build distributed applications by depending on interfaces in an
[incubator-dubbo-website] branch asf-site updated: add title, keywords, descriptions to English blogs (#132)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 9792980 add title, keywords, descriptions to English blogs (#132) 9792980 is described below commit 979298047a779cc1d3edafd4ecc6029e74999574 Author: Song Kun AuthorDate: Wed Sep 5 08:56:33 2018 +0800 add title, keywords, descriptions to English blogs (#132) --- blog/en-us/dubbo-101.md| 6 blog/en-us/dubbo-annotation.md | 6 ...bbo-basic-usage-dubbo-provider-configuration.md | 8 - blog/en-us/dubbo-generic-invoke.md | 6 blog/en-us/dubbo-invoke.md | 5 +++ blog/en-us/dubbo-k8s.md| 36 +++- blog/en-us/dubbo-loadbalance.md| 8 +++-- blog/en-us/dubbo-meetup-beijing-may-12th-2018.md | 6 blog/en-us/dubbo-meetup-shanghai-jun-23rd-2018.md | 6 blog/en-us/dubbo-new-async.md | 9 - blog/en-us/dubbo-zk.md | 6 blog/en-us/dubbo2-js.md| 10 +- blog/en-us/introduction-to-dubbo-qos.md| 6 blog/en-us/introduction-to-dubbo-spi-2.md | 6 blog/en-us/introduction-to-dubbo-spi.md| 8 - blog/en-us/pinpoint.md | 6 blog/en-us/prepare-an-apache-release.md| 5 +++ blog/en-us/sentinel-introduction-for-dubbo.md | 6 .../en-us/spring-boot-dubbo-start-stop-analysis.md | 6 blog/en-us/tracing-with-skywalking.md | 28 blog/zh-cn/dubbo-k8s.md| 38 -- blog/zh-cn/dubbo-meetup-shanghai-jun-23rd-2018.md | 6 blog/zh-cn/dubbo-meetup-shenzhen.md| 6 blog/zh-cn/introduction-to-dubbo-spi-2.md | 1 + .../zh-cn/spring-boot-dubbo-start-stop-analysis.md | 1 + blog/zh-cn/tracing-with-skywalking.md | 1 + docs/zh-cn/user/demos/explicit-target.md | 2 +- docs/zh-cn/user/maturity.md| 2 +- 28 files changed, 198 insertions(+), 42 deletions(-) diff --git a/blog/en-us/dubbo-101.md b/blog/en-us/dubbo-101.md index 2a4f2dc..01e6937 100644 --- a/blog/en-us/dubbo-101.md +++ b/blog/en-us/dubbo-101.md @@ -1,3 +1,9 @@ +--- +title: Your First Dubbo Demo +keywords: Dubbo, RPC, RMI +description: Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy. +--- + # Your First Dubbo Demo ## Java RMI Introduction diff --git a/blog/en-us/dubbo-annotation.md b/blog/en-us/dubbo-annotation.md index 4ab206e..6e90411 100644 --- a/blog/en-us/dubbo-annotation.md +++ b/blog/en-us/dubbo-annotation.md @@ -1,3 +1,9 @@ +--- +title: Use Annotations In Dubbo +keywords: Dubbo, Annotation, Spring +description: This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`. +--- + # Use Annotations In Dubbo With the widely promotion and implementation of Microservices Architecture, the Microservices Architecture represented by Spring Boot and Spring Cloud, in Java ecosystem, introduced some brand new programming model, like: diff --git a/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md index 8f0d26b..f674e08 100644 --- a/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md +++ b/blog/en-us/dubbo-basic-usage-dubbo-provider-configuration.md @@ -1,4 +1,10 @@ -Dubbo Basic Usage-Dubbo Provider Configuration +--- +title: Dubbo Basic Usage -- Dubbo Provider Configuration +keywords: Dubbo, Provider, Configuration +description: This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code. +--- + +Dubbo Basic Usage -- Dubbo Provider Configuration --- # Dubbo Basic Usage diff --git a/blog/en-us/dubbo-generic-invoke.md b/blog/en-us/dubbo-generic-invoke.md index 98f7fbf..5d8f0b1 100644 --- a/blog/en-us/dubbo-generic-invoke.md +++ b/blog/en-us/dubbo-generic-invoke.md @@ -1,3 +1,9 @@ +--- +title: Generic invoke of Dubbo +keywords: Dubbo, Generic invoke +description: This article introduces you when and how to use generic invoke of Dubbo. +--- + # Generic invoke of Dubbo The generic invoke could be considered to be used in the following cases: diff --git a/blog/en-us/dubbo-invoke.md b/blog/en-us/dubbo-invoke.md index ab51e2d..56422dd 100644 --- a/blog/en-us/dubbo-invoke.md +++ b/blog/en-us/dubbo-invoke.md @@ -1,3 +1,8 @@ +--- +title: Dubbo: Several ways about
[incubator-dubbo] branch 2.6.x updated: Qos enhancement, take #2153 back to 2.6.x (#2455)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 97d20a3 Qos enhancement, take #2153 back to 2.6.x (#2455) 97d20a3 is described below commit 97d20a362284623f2220f834c7e6498ffe3c951b Author: Jerrick Zhu AuthorDate: Thu Sep 6 11:45:34 2018 +0800 Qos enhancement, take #2153 back to 2.6.x (#2455) --- .../com/alibaba/dubbo/config/ApplicationConfig.java | 3 +++ .../alibaba/dubbo/qos/protocol/QosProtocolWrapper.java | 17 + .../dubbo/registry/integration/RegistryProtocol.java| 17 - 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java index 9238a11..523e005 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/com/alibaba/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/com/alibaba/dubbo/qos/protocol/QosProtocolWrapper.java b/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/protocol/QosProtocolWrapper.java index 26692cc..73d1f56 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/protocol/QosProtocolWrapper.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/com/alibaba/dubbo/qos/protocol/QosProtocolWrapper.java @@ -18,6 +18,8 @@ package com.alibaba.dubbo.qos.protocol; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.logger.Logger; +import com.alibaba.dubbo.common.logger.LoggerFactory; import com.alibaba.dubbo.qos.server.Server; import com.alibaba.dubbo.rpc.Exporter; import com.alibaba.dubbo.rpc.Invoker; @@ -29,8 +31,12 @@ import java.util.concurrent.atomic.AtomicBoolean; import static com.alibaba.dubbo.common.Constants.ACCEPT_FOREIGN_IP; import static com.alibaba.dubbo.common.Constants.QOS_ENABLE; import static com.alibaba.dubbo.common.Constants.QOS_PORT; +import static com.alibaba.dubbo.qos.common.QosConstants.DEFAULT_PORT; public class QosProtocolWrapper implements Protocol { + +private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class); + private static AtomicBoolean hasStarted = new AtomicBoolean(false); private Protocol protocol; @@ -76,20 +82,23 @@ public class QosProtocolWrapper implements Protocol { } try { -boolean qosEnable = Boolean.parseBoolean(url.getParameter(QOS_ENABLE,"true")); +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; } -int port = Integer.parseInt(url.getParameter(QOS_PORT,"2")); -boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"true")); +int port = url.getParameter(QOS_PORT, DEFAULT_PORT); +boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP,"false")); Server server = com.alibaba.dubbo.qos.server.Server.getInstance(); server.setPort(port); server.setAcceptForeignIp(acceptForeignIp); server.start(); } catch (Throwable throwable) { -//throw new RpcException("fail to start qos server", throwable); +logger.warn("Fail to start qos server: ", throwable); } } } diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/com/alibaba/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/com/alibaba/dubbo/registry/integration/RegistryProtocol.java index fd414ed..e1a59b9 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/com/alibaba/dubbo/registry/integration/RegistryProtocol.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/com/alibaba/dubbo/registry/integration/RegistryProtocol.java @@ -135,26 +13
[incubator-dubbo] branch 2.6.x updated: upgrade javadoc to 3.0.1 (#2454)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 7ece161 upgrade javadoc to 3.0.1 (#2454) 7ece161 is described below commit 7ece1615389174d091b194b46baceb41a7ed4946 Author: Jerrick Zhu AuthorDate: Thu Sep 6 11:11:36 2018 +0800 upgrade javadoc to 3.0.1 (#2454) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 69aa46e..43a160c 100644 --- a/pom.xml +++ b/pom.xml @@ -115,7 +115,7 @@ 2.8.2 3.6.0 3.0.1 -3.0.0 +3.0.1 6.1.26 3.0.0 0.8.1
[incubator-dubbo] 01/01: fix telnet invoke NPE #2218 (#2273)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch telnet-npe-2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git commit 2ca0af73942d2c9ebcb3ead8eecdc0940bd7bb43 Author: Michael Chow AuthorDate: Fri Aug 17 11:12:21 2018 +0800 fix telnet invoke NPE #2218 (#2273) * fix issue #2218 * add some unit tests --- .../protocol/dubbo/telnet/InvokeTelnetHandler.java | 13 .../rpc/protocol/dubbo/support/DemoService.java| 2 ++ .../protocol/dubbo/support/DemoServiceImpl.java| 5 +++ .../dubbo/telnet/InvokerTelnetHandlerTest.java | 36 ++ 4 files changed, 56 insertions(+) diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java index 47f11f5..59733dc 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java @@ -60,6 +60,19 @@ public class InvokeTelnetHandler implements TelnetHandler { for (int i = 0; i < types.length; i++) { Class type = types[i]; Object arg = args.get(i); + +if (arg == null) { +// if the type is primitive, the method to invoke will cause NullPointerException definitely +// so we can offer a specified error message to the invoker in advance and avoid unnecessary invoking +if (type.isPrimitive()) { +throw new NullPointerException(String.format( +"The type of No.%d parameter is primitive(%s), but the value passed is null.", i + 1, type.getName())); +} + +// if the type is not primitive, we choose to believe what the invoker want is a null value +continue; +} + if (ReflectUtils.isPrimitive(arg.getClass())) { if (!ReflectUtils.isPrimitive(type)) { return false; diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java index 182a1e8..93c48f5 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java @@ -57,4 +57,6 @@ public interface DemoService { NonSerialized returnNonSerialized(); +long add(int a, long b); + } \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java index 93c9764..50d98e6 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java @@ -103,4 +103,9 @@ public class DemoServiceImpl implements DemoService { public NonSerialized returnNonSerialized() { return new NonSerialized(); } + +public long add(int a, long b) { +return a + b; +} + } \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java index 04092d0..9dfc20f 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java @@ -33,6 +33,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; @@ -70,6 +71,41 @@ public class InvokerTelnetHandlerTest { @SuppressWarnings("unchecked") @Test +public void testInvokeByPassingNullValue() throws RemotingException { +mockInvoker = mock(Invoker.class); +given(mockInvoker.getInterface()).willReturn(DemoService.class); + given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20883/demo")); +given(mockInvoker.invoke(any(Invocation.class))).willReturn(new RpcResult("ok"))
[incubator-dubbo] branch 2.6.x updated: fix telnet invoke NPE #2218 (#2273) (#2453)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 52e9290 fix telnet invoke NPE #2218 (#2273) (#2453) 52e9290 is described below commit 52e9290d12162d1d483b21070729e7f2c6a04733 Author: Jerrick Zhu AuthorDate: Thu Sep 6 09:57:44 2018 +0800 fix telnet invoke NPE #2218 (#2273) (#2453) --- .../protocol/dubbo/telnet/InvokeTelnetHandler.java | 13 .../rpc/protocol/dubbo/support/DemoService.java| 2 ++ .../protocol/dubbo/support/DemoServiceImpl.java| 5 +++ .../dubbo/telnet/InvokerTelnetHandlerTest.java | 36 ++ 4 files changed, 56 insertions(+) diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java index 47f11f5..59733dc 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokeTelnetHandler.java @@ -60,6 +60,19 @@ public class InvokeTelnetHandler implements TelnetHandler { for (int i = 0; i < types.length; i++) { Class type = types[i]; Object arg = args.get(i); + +if (arg == null) { +// if the type is primitive, the method to invoke will cause NullPointerException definitely +// so we can offer a specified error message to the invoker in advance and avoid unnecessary invoking +if (type.isPrimitive()) { +throw new NullPointerException(String.format( +"The type of No.%d parameter is primitive(%s), but the value passed is null.", i + 1, type.getName())); +} + +// if the type is not primitive, we choose to believe what the invoker want is a null value +continue; +} + if (ReflectUtils.isPrimitive(arg.getClass())) { if (!ReflectUtils.isPrimitive(type)) { return false; diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java index 182a1e8..93c48f5 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoService.java @@ -57,4 +57,6 @@ public interface DemoService { NonSerialized returnNonSerialized(); +long add(int a, long b); + } \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java index 93c9764..50d98e6 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/support/DemoServiceImpl.java @@ -103,4 +103,9 @@ public class DemoServiceImpl implements DemoService { public NonSerialized returnNonSerialized() { return new NonSerialized(); } + +public long add(int a, long b) { +return a + b; +} + } \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java index 04092d0..9dfc20f 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/com/alibaba/dubbo/rpc/protocol/dubbo/telnet/InvokerTelnetHandlerTest.java @@ -33,6 +33,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; @@ -70,6 +71,41 @@ public class InvokerTelnetHandlerTest { @SuppressWarnings("unchecked") @Test +public void testInvokeByPassingNullValue() throws RemotingException { +mockInvoker = mock(Invoker.class); +given(mockInvoker.getInterface()).willReturn(DemoService.class); + given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20883/demo")); +
[incubator-dubbo] branch telnet-npe-2.6.x created (now 2ca0af7)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch telnet-npe-2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. at 2ca0af7 fix telnet invoke NPE #2218 (#2273) This branch includes the following new commits: new 2ca0af7 fix telnet invoke NPE #2218 (#2273) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.
[incubator-dubbo] branch telnet-npe-2.6.x deleted (was 2ca0af7)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch telnet-npe-2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. was 2ca0af7 fix telnet invoke NPE #2218 (#2273) This change permanently discards the following revisions: discard 2ca0af7 fix telnet invoke NPE #2218 (#2273)
[incubator-dubbo] branch 2.6.x updated: Direct return when the server goes down unnormally. (#2451)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 8ae95c9 Direct return when the server goes down unnormally. (#2451) 8ae95c9 is described below commit 8ae95c954228f1637d21b037df218a3ed94231c7 Author: 时无两丶 <442367...@qq.com> AuthorDate: Thu Sep 6 09:26:12 2018 +0800 Direct return when the server goes down unnormally. (#2451) --- .../alibaba/dubbo/remoting/exchange/Response.java | 5 + .../remoting/exchange/support/DefaultFuture.java | 23 ++ .../support/header/HeaderExchangeHandler.java | 1 + 3 files changed, 29 insertions(+) diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/Response.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/Response.java index 0422a06..d01d20d 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/Response.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/Response.java @@ -41,6 +41,11 @@ public class Response { public static final byte SERVER_TIMEOUT = 31; /** + * channel inactive, directly return the unfinished requests. + */ +public static final byte CHANNEL_INACTIVE = 35; + +/** * request format error. */ public static final byte BAD_REQUEST = 40; diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/DefaultFuture.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/DefaultFuture.java index eccc86d..a72fadc 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/DefaultFuture.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/DefaultFuture.java @@ -90,6 +90,29 @@ public class DefaultFuture implements ResponseFuture { } } +/** + * close a channel when a channel is inactive + * directly return the unfinished requests. + * + * @param channel channel to close + */ +public static void closeChannel(Channel channel) { +for (long id : CHANNELS.keySet()) { +if (channel.equals(CHANNELS.get(id))) { +DefaultFuture future = getFuture(id); +if (future != null && !future.isDone()) { +Response disconnectResponse = new Response(future.getId()); +disconnectResponse.setStatus(Response.CHANNEL_INACTIVE); +disconnectResponse.setErrorMessage("Channel " + +channel + +" is inactive. Directly return the unFinished request : " + +future.getRequest()); +DefaultFuture.received(channel, disconnectResponse); +} +} +} +} + public static void received(Channel channel, Response response) { try { DefaultFuture future = FUTURES.remove(response.getId()); diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/header/HeaderExchangeHandler.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/header/HeaderExchangeHandler.java index 3c37817..f44318f 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/header/HeaderExchangeHandler.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/com/alibaba/dubbo/remoting/exchange/support/header/HeaderExchangeHandler.java @@ -123,6 +123,7 @@ public class HeaderExchangeHandler implements ChannelHandlerDelegate { try { handler.disconnected(exchangeChannel); } finally { +DefaultFuture.closeChannel(channel); HeaderExchangeChannel.removeChannelIfDisconnected(channel); } }
[incubator-dubbo-website] branch asf-site updated: markdown layout error (#137)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 98d472e markdown layout error (#137) 98d472e is described below commit 98d472ef12eac2ccac7f470d92140983e81f606f Author: ZhangXudong AuthorDate: Thu Sep 6 15:03:02 2018 +0800 markdown layout error (#137) --- docs/zh-cn/user/demos/service-container.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh-cn/user/demos/service-container.md b/docs/zh-cn/user/demos/service-container.md index 75d9755..12c3efa 100644 --- a/docs/zh-cn/user/demos/service-container.md +++ b/docs/zh-cn/user/demos/service-container.md @@ -14,8 +14,8 @@ * 配置 spring 配置加载位置: ```properties -dubbo.spring.config=classpath*:META-INF/spring/*.xml -``` +dubbo.spring.config=classpath*:META-INF/spring/*.xml +``` ### Jetty Container
[incubator-dubbo] branch master updated: fix typo (#2458)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new ec66820 fix typo (#2458) ec66820 is described below commit ec668207f36f522dbd2d9ad5d05930b516245d98 Author: Song Kun AuthorDate: Fri Sep 7 08:46:04 2018 +0800 fix typo (#2458) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 463a111..4700ea5 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ Please report security vulnerability to secur...@dubbo.incubator.apache.org (pri * [Node.js](https://github.com/dubbo/dubbo2.js) * [Python](https://github.com/dubbo/dubbo-client-py) -* [Php](https://github.com/dubbo/dubbo-php-framework) +* [PHP](https://github.com/dubbo/dubbo-php-framework) ## License
[incubator-dubbo-website] branch asf-site updated: fix typo (#147)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 0fd63b0 fix typo (#147) 0fd63b0 is described below commit 0fd63b083caed42fe96beb2d20d448448722a2b6 Author: Song Kun AuthorDate: Mon Sep 10 09:00:08 2018 +0800 fix typo (#147) --- site_config/community.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site_config/community.jsx b/site_config/community.jsx index 3b2b4ad..d39dfcc 100644 --- a/site_config/community.jsx +++ b/site_config/community.jsx @@ -611,7 +611,7 @@ export default { }, { title: 'Cluster', - content: Dubbo支持一下容错机制:, + content: Dubbo支持以下容错机制:, tags: [ { text: 'Fail over',
[incubator-dubbo] branch master updated: [Dubbo-2413] Fix StreamUtils resource leak (#2414)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new d173e84 [Dubbo-2413] Fix StreamUtils resource leak (#2414) d173e84 is described below commit d173e841c41704d13e7357eb5704764353384963 Author: Yuhao Bi AuthorDate: Thu Sep 6 19:22:51 2018 +0800 [Dubbo-2413] Fix StreamUtils resource leak (#2414) --- .../org/apache/dubbo/common/io/StreamUtils.java| 6 +++ .../apache/dubbo/common/io/StreamUtilsTest.java| 47 -- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/io/StreamUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/io/StreamUtils.java index 9b52286..5798f02 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/io/StreamUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/io/StreamUtils.java @@ -98,6 +98,7 @@ public class StreamUtils { @Override public void close() throws IOException { +is.close(); } }; } @@ -199,6 +200,11 @@ public class StreamUtils { return available; } + +@Override +public void close() throws IOException { +is.close(); +} }; } diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/io/StreamUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/io/StreamUtilsTest.java index b4dc1b6..2f8595f 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/io/StreamUtilsTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/io/StreamUtilsTest.java @@ -79,6 +79,8 @@ public class StreamUtilsTest { is.reset(); assertEquals(-1, is.read()); assertEquals(-1, is.read()); + +is.close(); } @Test @@ -118,35 +120,54 @@ public class StreamUtilsTest { @Test(expected = IOException.class) public void testMarkInputSupport() throws IOException { InputStream is = StreamUtilsTest.class.getResourceAsStream("/StreamUtilsTest.txt"); -is = StreamUtils.markSupportedInputStream(new PushbackInputStream(is), 1); - -is.mark(1); -int read = is.read(); -assertThat(read, is((int) '0')); - -is.skip(1); -is.read(); +try { +is = StreamUtils.markSupportedInputStream(new PushbackInputStream(is), 1); + +is.mark(1); +int read = is.read(); +assertThat(read, is((int) '0')); + +is.skip(1); +is.read(); +} finally { +if (is != null) { +is.close(); +} +} } @Test -public void testSkipForOriginMarkSupportInput() { +public void testSkipForOriginMarkSupportInput() throws IOException { InputStream is = StreamUtilsTest.class.getResourceAsStream("/StreamUtilsTest.txt"); InputStream newIs = StreamUtils.markSupportedInputStream(is, 1); assertThat(newIs, is(is)); +is.close(); } @Test(expected = NullPointerException.class) public void testReadEmptyByteArray() throws IOException { InputStream is = StreamUtilsTest.class.getResourceAsStream("/StreamUtilsTest.txt"); -is = StreamUtils.limitedInputStream(is, 2); -is.read(null, 0, 1); +try { +is = StreamUtils.limitedInputStream(is, 2); +is.read(null, 0, 1); +} finally { +if (is != null) { +is.close(); +} +} } @Test(expected = IndexOutOfBoundsException.class) public void testReadWithWrongOffset() throws IOException { InputStream is = StreamUtilsTest.class.getResourceAsStream("/StreamUtilsTest.txt"); -is = StreamUtils.limitedInputStream(is, 2); -is.read(new byte[1], -1, 1); +try { +is = StreamUtils.limitedInputStream(is, 2); +is.read(new byte[1], -1, 1); +} finally { +if (is != null) { +is.close(); +} +} } } \ No newline at end of file
[incubator-dubbo-docs] branch master updated (4687ecf -> b463da6)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-docs.git. from 4687ecf Merge pull request #40 from nzomkxia/link-fix add 4b69bb2 add guide to website new b463da6 Merge pull request #45 from apache/diecui1202-patch-1 The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: README.md | 2 ++ 1 file changed, 2 insertions(+)
[incubator-dubbo-docs] branch diecui1202-patch-1 deleted (was 4b69bb2)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch diecui1202-patch-1 in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-docs.git. was 4b69bb2 add guide to website The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[incubator-dubbo-website] branch asf-site updated: fix markdown layout error (#140)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 41d9685 fix markdown layout error (#140) 41d9685 is described below commit 41d96850a0c73180f15eec77e10b3630d097dcba Author: ZhangXudong AuthorDate: Thu Sep 6 17:37:12 2018 +0800 fix markdown layout error (#140) --- docs/zh-cn/user/recommend.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/zh-cn/user/recommend.md b/docs/zh-cn/user/recommend.md index 6dcc6e0..902e244 100644 --- a/docs/zh-cn/user/recommend.md +++ b/docs/zh-cn/user/recommend.md @@ -145,8 +145,8 @@ Dubbo 中所有的配置项都可以配置在 Spring 配置文件中,并且可 4. 服务提供者协议 `dubbo.service.protocol`、服务的监听端口 `dubbo.service.server.port` ```xml - -``` + +``` 5. 服务线程池大小 `dubbo.service.max.thread.threads.size`
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new ce4a2dd build site ce4a2dd is described below commit ce4a2dd1fa40a545f03044ff12f13198652bc9fc Author: zhuyong AuthorDate: Thu Sep 6 17:38:57 2018 +0800 build site --- build/blog.js| 6 +-- build/blogDetail.js | 6 +-- build/community.js | 6 +-- build/documentation.js | 6 +-- build/home.js| 6 +-- en-us/docs/user/demos/service-container.html | 55 +- en-us/docs/user/demos/service-container.json | 2 +- zh-cn/docs/user/demos/service-container.html | 55 +- zh-cn/docs/user/demos/service-container.json | 2 +- zh-cn/docs/user/recommend.html | 58 +++- zh-cn/docs/user/recommend.json | 2 +- 11 files changed, 106 insertions(+), 98 deletions(-) diff --git a/build/blog.js b/build/blog.js index 9fa054f..bd221da 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] - Copyright (c) 2016 Jed Watson. +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t - 中中http://dubbo.apache.org/books/dubbo-dev-book-en/impls/container.html;>Container Extension Points. Configure it with the -D parameter in the java command or dubbo.properties. @@ -21,34 +21,35 @@ Automatically load all spring configurations in the META-INF/spring. - +dubbo.spring.config=classpath*:META-INF/spring/*.xml + -dubbo.spring.config=classpath*:META-INF/spring/*.xml - -### Jetty Container - -* Start an embedded Jetty for reporting status. -* Configure: -* `dubbo.jetty.port=8080`: configure jetty start up port -* `dubbo.jetty.directory=/foo/bar`: static file that can be visited by jetty directly. -* `dubbo.jetty.page=log,status,system`: configure the displayed page, loading all pages by default - - -### Log4j Container - -* Automatic configuration log4j configuration. At the start of the multi-process, log files automatically by process sub-directory. -* Configure: -* `dubbo.log4j.file=/foo/bar.log`: configure log file path -* `dubbo.log4j.level=WARN`: configure log level -* `dubbo.log4j.subdirectory=20880`: configure log sub directory for multi-process startup and avoiding conflict - -## Container startup - -load spring by default. - -```sh -java com.alibaba.dubbo.container.Main +Jetty Container + +Start an embedded Jetty for reporting status. +Configure: + +dubbo.jetty.port=8080: configure jetty start up port +dubbo.jetty.directory=/foo/bar: static file that can be visited by jetty directly. +dubbo.jetty.page=log,status,system: configure the displayed page, loading all pages by default + + + +Log4j Container + +Automatic configuration log4j configuration. At the start of the multi-process, log files automatically by process sub-directory. +Configure: + +dubbo.log4j.file=/foo/bar.log: configure log file path +dubbo.log4j.level=WARN: configure log level +dubbo.log4j.subdirectory=20880: configure log sub directory for multi-process startup and avoiding conflict + + + +Co
[incubator-dubbo-website] branch asf-site updated: Dubbo blog: Meet Dubbo (#141)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 9c9c016 Dubbo blog: Meet Dubbo (#141) 9c9c016 is described below commit 9c9c01697136a7476f6893308980a2c840075f5d Author: 时无两丶 <442367...@qq.com> AuthorDate: Thu Sep 6 20:47:37 2018 +0800 Dubbo blog: Meet Dubbo (#141) --- blog/zh-cn/meet-dubbo.md | 64 1 file changed, 64 insertions(+) diff --git a/blog/zh-cn/meet-dubbo.md b/blog/zh-cn/meet-dubbo.md new file mode 100644 index 000..1cb6d87 --- /dev/null +++ b/blog/zh-cn/meet-dubbo.md @@ -0,0 +1,64 @@ +--- +title: 遇见Dubbo +keywords: Dubbo, Committer +description: 本文记录了一个小白成长为Dubbo committer的过程。 +--- + +# 遇见Dubbo + +我是一个有Dubbo情节的程序员。 + +Dubbo以不同方式,陪伴了我时间不长的整个代码生涯。不久前,通过社区投票,我被选举为`Committer`。当时我在朋友圈发了一句话,也是贯穿我从开始使用Dubbo、研究Dubbo、贡献Dubbo到最后成为`Committer`的全过程,一直为我提供内心无与伦比愉悦的源泉:成长这种事,能看见脚印特别幸福。 + +今天来个回忆杀,把我和Dubbo的那些事拿出来说说。 + +## 小白 + +我知道Dubbo,是在我大三翘课出去实习的时候,那个时候是无知的,我眼里最牛的人就是能熟练使用各种配置,精通SSH框架的人。就是在那种情况下,我外出实习,遇到了一群影响我至今的人。当时也是机缘巧合,我们进行了两个非常小的模块的服务化改造。那时的团队除了我们老大,全是一群新兵蛋子,老大指哪我们打哪。老大说,就用Dubbo吧,从那时候开始,我才知道,哦!原来还有一种东西叫做RPC,还有个阿里巴巴的RPC框架叫Dubbo。 + +苦于当时非常有限的水平和高强度的工作,我和Dubbo的缘分也就停留在一面之缘的程度——要说认识谈不上,说不认识也牵强。 + +## Contributor + +我在二维火任职的一年算是我Dubbo生涯里承上启下的一年。二维火当时自己维护了一个Dubbo的分支,有一群对Dubbo非常了解的人。那时候,工作结束搞Dubbo,周六加班研究Dubbo。看源码,看不懂就debug一下,debug也不明白就问,问人,问google,里外折腾了个遍。 + +后来毕业加入网易云音乐。大概是今年五月份的时候,我发现了一个Dubbo的小bug,并且给Dubbo提交了pull request。在第一次被merge之后,非常受鼓舞,这才有了后续的故事。后来,回看这第一次提交,真的算是我和Dubbo的一个拐点,拐弯之后,我才逐渐走上一条成为`Committer`的路。 + +可能很多人看到这里要望而却步了,这也是做开源给很多人留下的固有的印象——是不是没发现BUG就不能提交pull request,不能做贡献?其实完全不是的,这里给大家敲黑板划重点:其实很多贡献者的第一次贡献,贡献的并非代码,而是文档修改或者单元测试。相比于BUG或者新的Feature,单测和文档上的修复门槛就比较低了。 + +我自己的方法论就是:**先尝试增加单元测试,写单测的时候顺手debug+看代码。或者多看文档,了解框架的同时,发现错别字、语意不明或者文档上的链接干脆点不开的情况,直接提交PR到对应的仓库**。 + +万事开头难。第一次被merge代码,你就可以成为一个`Contributor`了。`Contributor`很多,但是`Committer`很少,下面继续说怎么从一个`Contributor`成长为独当一面的`Committer`。 + +## Committer + +做开源和写代码一样,都不是一朝一夕的事情,而是量变促成质变的过程。这是一个没捷径可走的过程,欲带皇冠必承其重。身后的Dubbo功底自不必多说,这个部分主要是想跟大家说一下除了钻研和热爱之外,其他需要注意的地方。 + +首先是多提交高质量PR。任何一个PR都会被review,代码中的问题,思路上的偏差,都会被指正。提交PR是一个反复琢磨的过程。PR的质量不能简单的归结于新增了多少行代码,高质量的PR一定是经过缜密思考的,为什么删除代码,新增的代码有什么意义,修改之后有什么效果等等。希望大家更加重视质量而非数量,眼光放长远,相信你的收获一定会非常大! + +第二个就是,我们需要培养一种思维方式——Apache Way。一句话概括就是**社区重于代码**。Apache是一个注重社区的的开源组织,其行为方式相比于目前我们的开发方式,还是有所不同,这里我举一个Apache Way的例子,用以说明传统方式相较于Apache Way的区别在哪里,这里假设我想为Dubbo开发一个功能A。 + +**Old Way**: + +1. 功能设计:做一个设计文档(根据功能大小而定),大概划定需要修改或新增的类,大体设计接口等。 +2. 开发代码。 +3. 提交PR。 +4. Review & Merge + +可以看到,我们整个过程中,真正与社区交互的只有最后一步。 + +**Apache Way**: + +1. 功能设计:发送邮件至mailing list并且提交ISSUE,与社区成员共同探讨,产出一个设计文档(根据功能大小而定),大概划定需要修改或新增的类,大体设计接口等。然后再次发送邮件并且回复ISSUE,通知社区设计文档定稿或者方案确定。 +2. 开发代码:发送邮件至社区,通知社区成员我即将投入开发功能A,如需帮助,可以同时说明需要协助。 +3. 提交PR:发送邮件并且回复ISSUE,提醒社区开发结束,贴上PR地址以通知社区review代码。 +4. Review + Merge后,发送邮件并且关闭ISSUE,通知社区功能A的开发功能告一段落。 + +可以看到,Apache Way就是在整个开发过程中,不断地与社区交互,最大发挥社区的功能,汲取众人之力,这才是所谓**社区**以及所谓**开源**的含义。 + +## 结尾 + +Dubbo目前还在孵化阶段,整个Dubbo社区还不完善,我们也在跟着Dubbo一起成长,我们非常希望更多的Dubbo爱好者深度参与到Dubbo中,为你的代码生涯树一个里程碑。 + +相信过程,收获结果;天道酬勤,功不唐捐! +
[incubator-dubbo] branch master updated: remove travis cache (#2481)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 7e5f080 remove travis cache (#2481) 7e5f080 is described below commit 7e5f080a6aac65d5f80f8f651884652ad314234e Author: Jerrick Zhu AuthorDate: Tue Sep 11 12:21:09 2018 +0800 remove travis cache (#2481) --- .travis.yml | 4 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 26e0783..acf5d48 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,10 +6,6 @@ jdk: - oraclejdk9 - oraclejdk8 -cache: - directories: -- '$HOME/.m2/repository' - install: true script:
[incubator-dubbo] branch master updated: format code style (#2475)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 038e87e format code style (#2475) 038e87e is described below commit 038e87e69196613409722fc03e2f9737ea7b190c Author: Jexy <839447...@qq.com> AuthorDate: Tue Sep 11 12:54:46 2018 +0800 format code style (#2475) --- .../src/main/java/org/apache/dubbo/qos/command/CommandContext.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandContext.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandContext.java index 744a8c6..0dae562 100644 --- a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandContext.java +++ b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/CommandContext.java @@ -19,6 +19,7 @@ package org.apache.dubbo.qos.command; import io.netty.channel.Channel; public class CommandContext { + private String commandName; private String[] args; private Channel remote; @@ -29,7 +30,7 @@ public class CommandContext { this.commandName = commandName; } -public CommandContext(String commandName, String[] args,boolean isHttp) { +public CommandContext(String commandName, String[] args, boolean isHttp) { this.commandName = commandName; this.args = args; this.isHttp = isHttp;
[incubator-dubbo] branch master updated: [Dubbo-2424] Fix switch-case fall through in ChannelEventRunnable (#2426)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 51f0677 [Dubbo-2424] Fix switch-case fall through in ChannelEventRunnable (#2426) 51f0677 is described below commit 51f0677c8eaca9a7d8a37e663a344e8b02543350 Author: Yuhao Bi AuthorDate: Tue Sep 11 12:55:51 2018 +0800 [Dubbo-2424] Fix switch-case fall through in ChannelEventRunnable (#2426) --- .../apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java index 59622a6..3151704 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java +++ b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java @@ -82,6 +82,7 @@ public class ChannelEventRunnable implements Runnable { logger.warn("ChannelEventRunnable handle " + state + " operation error, channel is " + channel + ", message is " + message, e); } +break; case CAUGHT: try { handler.caught(channel, exception);
[incubator-dubbo] branch master updated: [Dubbo-2446]Fix ClassNotFoundException when load Service Interface by parent ClassLoader (#2447)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new e18810b [Dubbo-2446]Fix ClassNotFoundException when load Service Interface by parent ClassLoader (#2447) e18810b is described below commit e18810baba0e2314f11a2c8c080cd58d9af446bf Author: 邓志 AuthorDate: Tue Sep 11 15:32:25 2018 +0800 [Dubbo-2446]Fix ClassNotFoundException when load Service Interface by parent ClassLoader (#2447) * 用jarslink做的module隔离,dubbo调用时会抛ClassNotFoundException.经查是ClassLoader不一致。为了严谨,做此修改,以确保Service Interface和Invocation Interface的ClassLoader是同一个。 * invokerInterface非空判断 --- .../src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java | 8 .../src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java | 8 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java index ea499a3..78f7b92 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java @@ -591,6 +591,14 @@ public final class ReflectUtils { } } +public static Class forName(ClassLoader cl, String name) { +try { +return name2class(cl, name); +} catch (ClassNotFoundException e) { +throw new IllegalStateException("Not found class " + name + ", cause: " + e.getMessage(), e); +} +} + /** * name to class. * "boolean" => boolean.class diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java index 077970a..e2b0a66 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/RpcUtils.java @@ -49,7 +49,9 @@ public class RpcUtils { && !invocation.getMethodName().startsWith("$")) { String service = invocation.getInvoker().getUrl().getServiceInterface(); if (service != null && service.length() > 0) { -Class cls = ReflectUtils.forName(service); +Class invokerInterface = invocation.getInvoker().getInterface(); +Class cls = invokerInterface != null ? ReflectUtils.forName(invokerInterface.getClassLoader(), service) +: ReflectUtils.forName(service); Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes()); if (method.getReturnType() == void.class) { return null; @@ -71,7 +73,9 @@ public class RpcUtils { && !invocation.getMethodName().startsWith("$")) { String service = invocation.getInvoker().getUrl().getServiceInterface(); if (service != null && service.length() > 0) { -Class cls = ReflectUtils.forName(service); +Class invokerInterface = invocation.getInvoker().getInterface(); +Class cls = invokerInterface != null ? ReflectUtils.forName(invokerInterface.getClassLoader(), service) +: ReflectUtils.forName(service); Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes()); if (method.getReturnType() == void.class) { return null;
[incubator-dubbo] branch master updated: Update dubbo-issue-report-template.md (#2483)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new c9eb57f Update dubbo-issue-report-template.md (#2483) c9eb57f is described below commit c9eb57fde2f3c06c6043bdd5eaf7051048001174 Author: elmar.chen AuthorDate: Tue Sep 11 16:03:08 2018 +0800 Update dubbo-issue-report-template.md (#2483) fix some wording issue. --- .github/ISSUE_TEMPLATE/dubbo-issue-report-template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/dubbo-issue-report-template.md b/.github/ISSUE_TEMPLATE/dubbo-issue-report-template.md index c2ff96a..13587d0 100644 --- a/.github/ISSUE_TEMPLATE/dubbo-issue-report-template.md +++ b/.github/ISSUE_TEMPLATE/dubbo-issue-report-template.md @@ -13,7 +13,7 @@ about: If you would like to report a issue to Dubbo, please use this template. * Operating System version: xxx * Java version: xxx -### Step to reproduce this issue +### Steps to reproduce this issue 1. xxx 2. xxx @@ -27,7 +27,7 @@ What do you expected from the above steps? ### Actual Result -What is actually happen? +What actually happens? If there is an exception, please attach the exception trace:
[incubator-dubbo] branch master updated: Update readme (#2488)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new e1e6978 Update readme (#2488) e1e6978 is described below commit e1e6978bec999562cff96fd8fbc9506b1047a7f5 Author: Song Kun AuthorDate: Wed Sep 12 09:35:19 2018 +0800 Update readme (#2488) * update readme * remove uncessary space --- README.md | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7fb8cde..c707927 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ ![maven](https://img.shields.io/maven-central/v/com.alibaba/dubbo.svg) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Apache%20Dubbo%20(incubating)%20is%20a%20high-performance%2C%20java%20based%2C%20open%20source%20RPC%20framework.=http://dubbo.incubator.apache.org/=ApacheDubbo=rpc,java,dubbo,micro-service) -Apache Dubbo (incubating) is a high-performance, java based open source RPC framework. Please visit [official site ](http://dubbo.incubator.apache.org) for quick start and documentations, as well as [Wiki](https://github.com/apache/incubator-dubbo/wiki) for news, FAQ, and release notes. +Apache Dubbo (incubating) is a high-performance, Java based open source RPC framework. Please visit [official site](http://dubbo.incubator.apache.org) for quick start and documentations, as well as [Wiki](https://github.com/apache/incubator-dubbo/wiki) for news, FAQ, and release notes. -We are now collecting dubbo user info in order to help us to improve dubbo better, pls. kindly help us by providing yours on [issue#1012: Wanted: who's using dubbo](https://github.com/apache/incubator-dubbo/issues/1012), thanks :) +We are now collecting dubbo user info in order to help us to improve Dubbo better, pls. kindly help us by providing yours on [issue#1012: Wanted: who's using dubbo](https://github.com/apache/incubator-dubbo/issues/1012), thanks :) ## Architecture @@ -33,7 +33,7 @@ The following code snippet comes from [Dubbo Samples](https://github.com/dubbo/d # cd dubbo-samples/dubbo-samples-api ``` -There's one [README](https://github.com/dubbo/dubbo-samples/blob/master/dubbo-samples-api/README.md) file under `dubbo-samples-api` directory. Read it and try this sample out by following the instructions. +There's a [README](https://github.com/dubbo/dubbo-samples/blob/master/dubbo-samples-api/README.md) file under `dubbo-samples-api` directory. Read it and try this sample out by following the instructions. ### Maven dependency @@ -151,7 +151,7 @@ The consumer will print out `Hello world` on the screen. ## Contact * Mailing list: - * dev list: for dev/user discussion. [subscribe](mailto:[dev-subscr...@dubbo.incubator.apache.org]), [unsubscribe](mailto:[dev-unsubscr...@dubbo.incubator.apache.org]), [archive](https://lists.apache.org/list.html?d...@dubbo.apache.org), [guide](https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide) + * dev list: for dev/user discussion. [subscribe](mailto:dev-subscr...@dubbo.incubator.apache.org), [unsubscribe](mailto:dev-unsubscr...@dubbo.incubator.apache.org), [archive](https://lists.apache.org/list.html?d...@dubbo.apache.org), [guide](https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide) * Bugs: [Issues](https://github.com/apache/incubator-dubbo/issues/new?template=dubbo-issue-report-template.md) * Gitter: [Gitter channel](https://gitter.im/alibaba/dubbo) @@ -183,7 +183,7 @@ Please follow the [template](https://github.com/apache/incubator-dubbo/issues/ne ## Reporting a security vulnerability -Please report security vulnerability to secur...@dubbo.incubator.apache.org (private mailing list). +Please report security vulnerability to [us](secur...@dubbo.incubator.apache.org) privately. ## Dubbo eco system
[incubator-dubbo] branch 2.6.4-release deleted (was d7af5d9)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch 2.6.4-release in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. was d7af5d9 [maven-release-plugin] prepare for next development iteration The revisions that were on this branch are still contained in other references; therefore, this change does not discard any commits from the repository.
[incubator-dubbo] 01/01: Merge branch '2.6.4-release' into 2.6.x
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git commit f77c9fcc5ecfa10ce535a75b877bbce9ba078c70 Merge: 28e1037 d7af5d9 Author: zhuyong AuthorDate: Mon Oct 8 15:15:15 2018 +0800 Merge branch '2.6.4-release' into 2.6.x CHANGES.md | 27 +- NOTICE | 11 - all/pom.xml| 4 ++-- bom/pom.xml| 2 +- dependencies-bom/pom.xml | 2 +- distribution/pom.xml | 2 +- dubbo-bootstrap/pom.xml| 2 +- dubbo-cluster/pom.xml | 2 +- dubbo-common/pom.xml | 2 +- dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-config/dubbo-config-spring/pom.xml | 2 +- .../alibaba/dubbo/config/spring/ConfigTest.java| 4 ++-- .../dubbo/config/spring/delay-fixed-time.xml | 2 +- .../dubbo/config/spring/delay-on-initialized.xml | 2 +- dubbo-config/pom.xml | 2 +- dubbo-container/dubbo-container-api/pom.xml| 2 +- dubbo-container/dubbo-container-log4j/pom.xml | 2 +- dubbo-container/dubbo-container-logback/pom.xml| 2 +- dubbo-container/dubbo-container-spring/pom.xml | 2 +- dubbo-container/pom.xml| 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-consumer/pom.xml | 2 +- dubbo-demo/dubbo-demo-provider/pom.xml | 2 +- dubbo-demo/pom.xml | 2 +- dubbo-filter/dubbo-filter-cache/pom.xml| 2 +- dubbo-filter/dubbo-filter-validation/pom.xml | 2 +- dubbo-filter/pom.xml | 2 +- dubbo-monitor/dubbo-monitor-api/pom.xml| 2 +- dubbo-monitor/dubbo-monitor-default/pom.xml| 2 +- dubbo-monitor/pom.xml | 2 +- dubbo-plugin/dubbo-qos/pom.xml | 2 +- dubbo-plugin/pom.xml | 2 +- dubbo-registry/dubbo-registry-api/pom.xml | 2 +- dubbo-registry/dubbo-registry-default/pom.xml | 2 +- dubbo-registry/dubbo-registry-multicast/pom.xml| 2 +- dubbo-registry/dubbo-registry-redis/pom.xml| 2 +- dubbo-registry/dubbo-registry-zookeeper/pom.xml| 2 +- dubbo-registry/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-api/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-grizzly/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-http/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-mina/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-netty/pom.xml| 2 +- dubbo-remoting/dubbo-remoting-netty4/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-p2p/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-zookeeper/pom.xml| 2 +- dubbo-remoting/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-api/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-dubbo/pom.xml | 2 +- .../dubbo/telnet/ChangeTelnetHandlerTest.java | 2 +- .../dubbo/telnet/InvokerTelnetHandlerTest.java | 12 +- dubbo-rpc/dubbo-rpc-hessian/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-http/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-injvm/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-memcached/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-redis/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rest/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rmi/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-thrift/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-webservice/pom.xml | 2 +- dubbo-rpc/pom.xml | 2 +- .../dubbo-serialization-api/pom.xml| 2 +- .../dubbo-serialization-fastjson/pom.xml | 2 +- .../dubbo-serialization-fst/pom.xml| 2 +- .../dubbo-serialization-hessian2/pom.xml | 2 +- .../dubbo-serialization-jdk/pom.xml| 2 +- .../dubbo-serialization-kryo/pom.xml | 2 +- dubbo-serialization/pom.xml| 2 +- dubbo-test/dubbo-test-benchmark/pom.xml| 2 +- .../dubbo-test-spring3/pom.xml | 2 +- dubbo-test/dubbo-test-compatibility/pom.xml| 2 +- dubbo-test/dubbo-test-examples/pom.xml | 2 +- dubbo-test/dubbo-test-integration/pom.xml | 2 +- dubbo-test/pom.xml | 4 ++-- pom.xml| 4 ++-- 75 files changed, 118 insertions(+), 84 deletions(-)
[incubator-dubbo] branch 2.6.x updated (28e1037 -> f77c9fc)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. from 28e1037 Optimize LeastActiveLoadBalance and add weight test case. (#2584) add 39ea8a8 add change log for 2.6.4 add 3750059 change port for unit test add 57399a2 Enhance NOTICE file. add f7baac7 Merge branch '2.6.4-release' of github.com:apache/incubator-dubbo into 2.6.4-release add 8803774 [maven-release-plugin] prepare release dubbo-2.6.4 add d7af5d9 [maven-release-plugin] prepare for next development iteration new f77c9fc Merge branch '2.6.4-release' into 2.6.x The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.md | 27 +- NOTICE | 11 - all/pom.xml| 4 ++-- bom/pom.xml| 2 +- dependencies-bom/pom.xml | 2 +- distribution/pom.xml | 2 +- dubbo-bootstrap/pom.xml| 2 +- dubbo-cluster/pom.xml | 2 +- dubbo-common/pom.xml | 2 +- dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-config/dubbo-config-spring/pom.xml | 2 +- .../alibaba/dubbo/config/spring/ConfigTest.java| 4 ++-- .../dubbo/config/spring/delay-fixed-time.xml | 2 +- .../dubbo/config/spring/delay-on-initialized.xml | 2 +- dubbo-config/pom.xml | 2 +- dubbo-container/dubbo-container-api/pom.xml| 2 +- dubbo-container/dubbo-container-log4j/pom.xml | 2 +- dubbo-container/dubbo-container-logback/pom.xml| 2 +- dubbo-container/dubbo-container-spring/pom.xml | 2 +- dubbo-container/pom.xml| 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-consumer/pom.xml | 2 +- dubbo-demo/dubbo-demo-provider/pom.xml | 2 +- dubbo-demo/pom.xml | 2 +- dubbo-filter/dubbo-filter-cache/pom.xml| 2 +- dubbo-filter/dubbo-filter-validation/pom.xml | 2 +- dubbo-filter/pom.xml | 2 +- dubbo-monitor/dubbo-monitor-api/pom.xml| 2 +- dubbo-monitor/dubbo-monitor-default/pom.xml| 2 +- dubbo-monitor/pom.xml | 2 +- dubbo-plugin/dubbo-qos/pom.xml | 2 +- dubbo-plugin/pom.xml | 2 +- dubbo-registry/dubbo-registry-api/pom.xml | 2 +- dubbo-registry/dubbo-registry-default/pom.xml | 2 +- dubbo-registry/dubbo-registry-multicast/pom.xml| 2 +- dubbo-registry/dubbo-registry-redis/pom.xml| 2 +- dubbo-registry/dubbo-registry-zookeeper/pom.xml| 2 +- dubbo-registry/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-api/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-grizzly/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-http/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-mina/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-netty/pom.xml| 2 +- dubbo-remoting/dubbo-remoting-netty4/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-p2p/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-zookeeper/pom.xml| 2 +- dubbo-remoting/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-api/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-dubbo/pom.xml | 2 +- .../dubbo/telnet/ChangeTelnetHandlerTest.java | 2 +- .../dubbo/telnet/InvokerTelnetHandlerTest.java | 12 +- dubbo-rpc/dubbo-rpc-hessian/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-http/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-injvm/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-memcached/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-redis/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rest/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rmi/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-thrift/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-webservice/pom.xml | 2 +- dubbo-rpc/pom.xml | 2 +- .../dubbo-serialization-api/pom.xml| 2 +- .../dubbo-serialization-fastjson/pom.xml | 2 +- .../dubbo-serialization-fst/pom.xml| 2 +- .../dubbo-serialization-hessian2/pom.xml | 2 +- .../dubbo-serialization-jdk/pom.xml| 2 +- .../dubbo-serial
svn commit: r29932 - in /release/incubator/dubbo: ./ 2.6.4/
Author: jerrick Date: Mon Oct 8 02:22:24 2018 New Revision: 29932 Log: release Apache Dubbo(incubating) 2.6.4 Added: release/incubator/dubbo/2.6.4/ release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip (with props) release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512 release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip (with props) release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512 Modified: release/incubator/dubbo/KEYS Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip == Binary file - no diff available. Propchange: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip -- svn:mime-type = application/octet-stream Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc == --- release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc (added) +++ release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc Mon Oct 8 02:22:24 2018 @@ -0,0 +1,16 @@ +-BEGIN PGP SIGNATURE- + +iQIzBAABCAAdFiEER7bUsvMa9+xqqNFOeVX7bR3SHPcFAlufePAACgkQeVX7bR3S +HPfb6w//exjvxVF/Al4uAhuIdQX9Q6UPRoT1+DHsdy5i6f938OCG98sfIn8Bt1o+ +U7Ztl8hupRBBwnp3ihJBFbY5t4Ua9a3IMRaplZhOTHFzGmSI1XVTdkQfuDCVFsVL +/5P6IYPhrvz2pfLE/tDZ+WGfPotI3dTiMdbpy07U2YUPVFy9uajQJXGhL4nBYRzq +W0EFTzJwZ0EKgf2GmW65mGadB68cF+XTduZ4FKLdgUNvguuJkXWXaDmCAqA/aok2 +/smYGgrTw48QyMrpI4ZrsM27odijmSqXhRBiR3WLb+EfcUgHHwuj3n+AtSrEDKvK +x80ZnDDqwIacnKlS5/BVWTmCBoR3163EiVQbdZEjkEyUIfuLxCjdFM+HSd220g1v +lwptWU1iMkZ12RjpnCs4lxQb+1L3VLwCaZld3Of7t+jd30d79G/svnKmAl6Z6Eyz +QLpBeNkZj0xeCr2huDMcqWzoKQKoHuWjPU95KgrV50FdIHQn9Z3P+k+j+JynBhck +HWgq5/ctOZKnEZnJxp1NJx8JpP+B940Cz4ls3bgujvC4D9jDm0KLgywNQd09pweW +DkhuZF/TnmVO0Q/a9pgTCDEd0Q1JPJZk8kXjy3BxpffD2IiJIf+7MKZoryG8SchE +OXeN6BLv7w4hLNAzLB7rSOPGD9gX6dzq+n3tvWje8gLGEfwFmDQ= +=xHuH +-END PGP SIGNATURE- Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512 == --- release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512 (added) +++ release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512 Mon Oct 8 02:22:24 2018 @@ -0,0 +1 @@ +23311aa4264ce5ad2af55851688167e61b5ab7635f8f9b7f669ef2d5aa15492a8361c257951256a2354b3c93aeb09f7a9d1703f186a7be5418ed5d5c904ed752 apache-dubbo-incubating-2.6.4-bin-release.zip Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip == Binary file - no diff available. Propchange: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip -- svn:mime-type = application/octet-stream Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc == --- release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc (added) +++ release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc Mon Oct 8 02:22:24 2018 @@ -0,0 +1,16 @@ +-BEGIN PGP SIGNATURE- + +iQIzBAABCAAdFiEER7bUsvMa9+xqqNFOeVX7bR3SHPcFAlufePEACgkQeVX7bR3S +HPcWYA/+P+ksT/THkcrFdPjlwn3V8ysMpK3tFMJErqnj8bKqpNIDniG3cp3jpt8g +DjPzQoMdr1JOPrnCRckqngv1BQ6a7cTIkYxb09BFj1IRiRlXM2hfOwMesBE6QJQ4 +PU771vpIF1xGHr4upxoGpVR++dRSOW4YH7UouZFuGQY8usobMtKG0HUihDjrAz3d +qChG3A7pvnCXoVgqefmjxSNteO96fQELNtIRFt+sJXOeyTs7dJmXG1wSwOxmcjem +c1TE+1l+rnOnvIGrWcyBiKuhRo1VgPZbW3SuP7KUgQNyf257gpS1YK4qKhJMZ2k1 +BFR47wtnrL1+OXg/YzokK/fVXfIliqsWWK2D5DNMWJa6uXtJGkNMmLg41bohjrLL +XD60EXeOxSZagIkWwvEL5PTdbo7yi3eihkPggO65cfmN3xlK+N4j+Wb2pMRmvlX1 +KTtY4CEe8T+tZqnKnryPUdo8zUHXBgwkRwGWgGYZwi8nrz0L9JdAl6BfZHKc67RA +4Vu07KN4/si0undAc1dqfk6sR8n3iW5mFCPdBIUkJLLYZQc10Ol5pbVi5P+zpBeu +MFAiu7CmUotMkczeMXEQaJOhem1i96RIKEEZmW5dcXtEO/KCsXEXjk8cKY3pK93h +iWmvsW930GngezdWNv/aIq5ikCwhUMUnuxi579izJFMOJwPBJQQ= +=zsMu +-END PGP SIGNATURE- Added: release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512 == --- release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512 (added) +++ release/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source
[incubator-dubbo] branch master updated: update lastest version to 2.6.4 (#2601)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 3c34ee8 update lastest version to 2.6.4 (#2601) 3c34ee8 is described below commit 3c34ee88fd79b5df0441320e53042b60a00bf76b Author: Jerrick Zhu AuthorDate: Mon Oct 8 16:02:38 2018 +0800 update lastest version to 2.6.4 (#2601) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4161d6b..75ec970 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ There's a [README](https://github.com/dubbo/dubbo-samples/blob/master/dubbo-samp com.alibaba dubbo -2.6.3 +2.6.4 ```
[incubator-dubbo] branch master updated: combine test coverage report (#2643)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 8cafcab combine test coverage report (#2643) 8cafcab is described below commit 8cafcab65dbb86a83e9ae3e09aba601af462c47d Author: Huang YunKun AuthorDate: Mon Oct 15 09:30:01 2018 +0800 combine test coverage report (#2643) --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 2d81475..5882557 100644 --- a/pom.xml +++ b/pom.xml @@ -474,10 +474,10 @@ -jacoco-site -package +report-aggregate +verify -report +report-aggregate
[incubator-dubbo] branch master updated: prototype for issue2570 (#2640)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 393ffce prototype for issue2570 (#2640) 393ffce is described below commit 393ffce5df5ac94a209914623d9a10bf94ef3b13 Author: Ian Luo AuthorDate: Tue Oct 16 16:16:54 2018 +0800 prototype for issue2570 (#2640) * #2570: dubbo all in one fail to start from a tomcat server when spring framework is absent * add comments and fix unit test * add license header * update comments in unit tests --- .../spring/initializer/DubboContextListener.java | 72 ++ .../src/main/resources/META-INF/web-fragment.xml | 4 +- .../DubboApplicationContextInitializerTest.java| 9 +-- .../spring/status/DataSourceStatusCheckerTest.java | 2 +- 4 files changed, 80 insertions(+), 7 deletions(-) diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/initializer/DubboContextListener.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/initializer/DubboContextListener.java new file mode 100644 index 000..35b2b70 --- /dev/null +++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/initializer/DubboContextListener.java @@ -0,0 +1,72 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.dubbo.config.spring.initializer; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +/** + * A Dubbo context listener is a delegation to org.springframework.web.context.ContextLoaderListener. This is necessary, + * because Dubbo is packaged into all-in-one jar, therefore it contains a web-fragment.xml from this sub module which's + * used for helping to assemble spring context listener automatically when it's not configured explicitly by user in + * web.xml. It works fine with spring, but it will lead to ClassNotFound exception and fail tomcat's bootup when user + * doesn't depend on spring framework. + */ +public class DubboContextListener implements ServletContextListener { +private static final Log logger = LogFactory.getLog(DubboContextListener.class); + +private static final String SPRING_CONTEXT_LISTENER = "org.springframework.web.context.ContextLoaderListener"; +private static final String SPRING_CONTEXT_ROOT = "org.springframework.web.context.WebApplicationContext.ROOT"; + +private ServletContextListener springContextListener; +private boolean executed = false; + +public DubboContextListener() { +try { +Class c = Class.forName(SPRING_CONTEXT_LISTENER); +springContextListener = (ServletContextListener) c.newInstance(); +} catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { +logger.warn("Servlet container detects dubbo's web fragment configuration, and tries to load " + +"org.springframework.web.context.ContextLoaderListener but fails to find the class. " + +"If the application don't rely on Spring framework, pls. simply ignore"); +} +} + +@Override +public void contextInitialized(ServletContextEvent servletContextEvent) { +if (springContextListener != null) { +// if spring context listener has already been registered, then do nothing +ServletContext context = servletContextEvent.getServletContext(); +if (context.getAttribute(SPRING_CONTEXT_ROOT) == null) { +executed = true; +springContextListener.contextInitialized(servletContextEvent); +} +} +} + +@Override +public void contextDestroyed(ServletContextEvent servletContextEvent) { +if (springContextListener != null && executed) { +springContextL
[incubator-dubbo-website] branch asf-site updated: fix link
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 8e639ef fix link 8e639ef is described below commit 8e639efbe2ba607cb058f59a72a6f826346b4e64 Author: zhuyong AuthorDate: Mon Oct 22 15:54:47 2018 +0800 fix link --- build/documentation.js | 2 +- site_config/develop.js | 8 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build/documentation.js b/build/documentation.js index 8272856..d8353bd 100644 --- a/build/documentation.js +++ b/build/documentation.js @@ -3,4 +3,4 @@ Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t
[incubator-dubbo-website] branch asf-site updated: add information (#169)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new cdf1664 add information (#169) cdf1664 is described below commit cdf1664ca52328b838ae7ebe512b8e6c0ebd38a1 Author: leyou240 AuthorDate: Tue Oct 30 16:59:50 2018 +0800 add information (#169) * Update developers_dev.md add information * Update developers_dev.md add information --- docs/en-us/developers/developers_dev.md | 4 ++-- docs/zh-cn/developers/developers_dev.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/en-us/developers/developers_dev.md b/docs/en-us/developers/developers_dev.md index 097665d..907002f 100644 --- a/docs/en-us/developers/developers_dev.md +++ b/docs/en-us/developers/developers_dev.md @@ -31,5 +31,5 @@ This page shows Dubbo developers. Please file PR to add or change items. ### Contributors | Github ID | Github URL | Organization | TimeZone | -| --- | --- | --- | --- | --- | -| | | | | | \ No newline at end of file +| --- | --- | --- | --- | +| leyou240 | <https://github.com/leyou240> | | +8 | diff --git a/docs/zh-cn/developers/developers_dev.md b/docs/zh-cn/developers/developers_dev.md index 1c51e7e..6cb31cc 100644 --- a/docs/zh-cn/developers/developers_dev.md +++ b/docs/zh-cn/developers/developers_dev.md @@ -31,5 +31,5 @@ ### 贡献者 | Github ID | Github URL | Organization | TimeZone | -| --- | --- | --- | --- | --- | -| | | | | | \ No newline at end of file +| --- | --- | --- | --- | +| leyou240 | <https://github.com/leyou240> | | +8 |
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 3900754 build site 3900754 is described below commit 3900754eb1046aec6a5edc9d6c8583242c0894d4 Author: 千臂 AuthorDate: Fri Nov 2 09:04:13 2018 +0800 build site --- en-us/docs/developers/developers_dev.html | 6 +++ en-us/docs/developers/developers_dev.json | 2 +- en-us/docs/user/demos/group-merger.html | 8 ++-- en-us/docs/user/demos/group-merger.json | 2 +- zh-cn/docs/developers/developers_dev.html | 6 +++ zh-cn/docs/developers/developers_dev.json | 2 +- zh-cn/docs/developers/guide_dev.html | 72 +++ zh-cn/docs/developers/guide_dev.json | 2 +- 8 files changed, 56 insertions(+), 44 deletions(-) diff --git a/en-us/docs/developers/developers_dev.html b/en-us/docs/developers/developers_dev.html index 349f01d..3387bf2 100644 --- a/en-us/docs/developers/developers_dev.html +++ b/en-us/docs/developers/developers_dev.html @@ -205,6 +205,12 @@ +8 + +biyuhao +https://github.com/biyuhao;>https://github.com/biyuhao +Asiainfo-sec ++8 + DisclaimerApache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making [...] diff --git a/en-us/docs/developers/developers_dev.json b/en-us/docs/developers/developers_dev.json index 09e96d6..20f6f6f 100644 --- a/en-us/docs/developers/developers_dev.json +++ b/en-us/docs/developers/developers_dev.json @@ -1,4 +1,4 @@ { "filename": "developers_dev.md", - "__html": "Developers\nThis page shows Dubbo developers. Please file PR to add or change items.\nCommitters\n\n\n\nApache ID\nName\nOrganization\nRole\nTimeZone\n\n\n\n\njmclean\nJustin Mclean\nApache\nMentor\n+11\n\n\nmarkt\nMark Thomas\nApache\nMentor\n+0\n\n\nwav [...] + "__html": "Developers\nThis page shows Dubbo developers. Please file PR to add or change items.\nCommitters\n\n\n\nApache ID\nName\nOrganization\nRole\nTimeZone\n\n\n\n\njmclean\nJustin Mclean\nApache\nMentor\n+11\n\n\nmarkt\nMark Thomas\nApache\nMentor\n+0\n\n\nwav [...] } \ No newline at end of file diff --git a/en-us/docs/user/demos/group-merger.html b/en-us/docs/user/demos/group-merger.html index 392773e..b84214a 100644 --- a/en-us/docs/user/demos/group-merger.html +++ b/en-us/docs/user/demos/group-merger.html @@ -25,22 +25,22 @@ The specified method to merge the results, other unspecified methods, will only call one group dubbo:reference interface="com.xxx.MenuService" group="*" dubbo:method name="getMenuItems" merger="true" / -/dubbo:service +/dubbo:reference The Specified a method does not merge the results, others merge the results dubbo:reference interface="com.xxx.MenuService" group="*" merger="true" dubbo:method name="getMenuItems" merger="false" / -/dubbo:service +/dubbo:reference Specify the merge strategy, the default according to the type of return value automatically match, if the same type has two mergers, you need to specify the name of the merger[2] dubbo:reference interface="com.xxx.MenuService" group="*" dubbo:method name="getMenuItems" merger="mymerge" / -/dubbo:service +/dubbo:reference Specify the merge method, it will call the return type's method for merging, the merging method parameter type must be the return type dubbo:reference interface="com.xxx.MenuService" group="*" dubbo:method name="getMenuItems" merger=".addAll" / -/dubbo:service +/dubbo:reference diff --git a/en-us/docs/user/demos/group-merger.json b/en-us/docs/user/demos/group-merger.json index 2ebc4e7..189100e 100644 --- a/en-us/docs/user/demos/group-merger.json +++ b/en-us/docs/user/demos/group-merger.json @@ -1,4 +1,4 @@ { "filename": "group-merger.md", - "__html": "Group Merger\nAccording to the group to invoke server and return the merge result [1], such as the menu service, the same interface, but there are a variety of implementations, using group distinction, consumers call each group and get the results, the merger can merge the resules, so that you can achieve aggregation Menu Item.\nRelated code can refer to https://github.com/apach [...] + "__html": "Group Merger\nAccording to the group to invoke server and return the merge result [1], such as the menu service, the same interface, but there are a variety of implementations, using group distinction, consumers call
[incubator-dubbo-website] branch asf-site updated: [Dubbo-171] Add chinese version for guide_dev page (#175)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new bc1000d [Dubbo-171] Add chinese version for guide_dev page (#175) bc1000d is described below commit bc1000de8b9bcde903c4f8d8f6a58b622c0177c8 Author: Huang YunKun AuthorDate: Fri Nov 2 09:03:19 2018 +0800 [Dubbo-171] Add chinese version for guide_dev page (#175) * add chinese version for guide_dev * polish --- docs/zh-cn/developers/guide_dev.md | 76 -- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/docs/zh-cn/developers/guide_dev.md b/docs/zh-cn/developers/guide_dev.md index 7063606..b976be4 100644 --- a/docs/zh-cn/developers/guide_dev.md +++ b/docs/zh-cn/developers/guide_dev.md @@ -1,53 +1,55 @@ -## Contributing to Dubbo +## 为Dubbo做贡献 -Dubbo is released under the non-restrictive Apache 2.0 license, and follows a very standard Github development process, using Github tracker for issues and merging pull requests into master. If you want to contribute even something trivial please do not hesitate, but follow the guidelines below. +Dubbo是在非限制性的Apache 2.0许可下发布的,遵循标准的Github开发流程,使用Github追踪处理问题,并将pull request合并到master中。如果您想为Dubbo 做贡献(即便是一些微小的),请不要犹豫,遵循下面的指导方针。 -### Sign the Contributor License Agreement -Before we accept a non-trivial patch or pull request we will need you to sign the Contributor License Agreement. Signing the contributor’s agreement does not grant anyone commit rights to the main repository, but it does mean that we can accept your contributions, and you will get an author credit if we do. Active contributors might be asked to join the core team, and given the ability to merge pull requests. +### 签署贡献者许可协议 +在我们接受一个补丁或pull request之前,我们需要您签署贡献者许可协议。签署贡献者协议并不授予任何人对代码仓库的提交权限,但是它意味着我们可以接受您的贡献,并且如果我们这样做,您将获得一个作者标注。主动贡献者可能会被邀请加入核心团队,并有权限合并pull request。 -### Contact +### 联系我们 - Mailing list + 邮件列表 -The mailing list is the recommended way for discussing almost anything that related to Dubbo. Please refer to this [guide](https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide) for detailed documentation on how to subscribe. -- [d...@dubbo.incubator.apache.org](mailto:dev-subscr...@dubbo.incubator.apache.org): the develop mailing list, you can ask question here if you have encountered any problem when using or developing Dubbo. -- [comm...@dubbo.incubator.apache.org](mailto:commits-subscr...@dubbo.incubator.apache.org): all the commits will be sent to this mailing list. You can subscribe to it if you are interested in Dubbo's development. -- [notificat...@dubbo.incubator.apache.org](mailto:notification-subscr...@dubbo.incubator.apache.org): all the Github [issue](https://github.com/apache/incubator-dubbo/issues) updates and [pull request](https://github.com/apache/incubator-dubbo/pulls) updates will be sent to this mailing list. +邮件列表是讨论几乎所有与Dubbo有关事情的推荐方式。有关如何订阅的详细文档,请参阅[指南](https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide)。 -### Reporting issue +- [d...@dubbo.incubator.apache.org](mailto:dev-subscr...@dubbo.incubator.apache.org): 开发邮件列表,如果您在使用或开发Dubbo时遇到任何问题,您可以在此提出问题。 +- [comm...@dubbo.incubator.apache.org](mailto:commits-subscr...@dubbo.incubator.apache.org): 所有提交将被发送到这个邮件列表。如果您对Dubbo的发展感兴趣,您可以订阅它。 +- [notificat...@dubbo.incubator.apache.org](mailto:notification-subscr...@dubbo.incubator.apache.org): 所有Github [issue](https://github.com/apache/incubator-dubbo/issues)和[pull request](https://github.com/apache/incubator-dubbo/pulls)的更新都会被发送到这个邮件列表。 -Please follow the [template](https://github.com/apache/incubator-dubbo/issues/new?template=dubbo-issue-report-template.md) for reporting any issues. +### 报告问题 -### Code Conventions -Our code style is almost in line with the standard java conventions (Popular IDE's default setting satisfy this), with the following additional restricts: -* If there are more than 120 characters in current line, start a new line. +在报告任何问题时请遵循[模版](https://github.com/apache/incubator-dubbo/issues/new?template=dubbo-issue-report-template.md)。 -* Make sure all new .java files to have a simple Javadoc class comment with at least a @date tag identifying birth, and preferably at least a paragraph on what the class is for. +### 代码约定 +我们的代码风格几乎和标准Java约定一致(流行IDE的默认设置满足这一点),主要有以下附加限制: -* Add the ASF license header comment to all new .java files (copy from existing files in the project) +* 如果当前行中有超过120个字符,则起一个新的行。 -* Make sure no @author tag added to the file you contribute since @author tag is not used at Apache, other ways such as cvs will record all your contributions fairly. +* 确保所有新的.java文件都有一个简单的JavaDoc类注释,其中至少有一个标识创建日期的标签,最好至少有一个关于该类的解释说明。 -* Add some Javadocs and, if you change the namespace, some XSD doc
[incubator-dubbo-website] branch asf-site updated: correct a spelling mistake in xml.md (#164)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 4058fe9 correct a spelling mistake in xml.md (#164) 4058fe9 is described below commit 4058fe9c44b71bec7aace2f46eefddb84ee9ae32 Author: SuperIllidan AuthorDate: Thu Oct 25 17:10:04 2018 +0800 correct a spelling mistake in xml.md (#164) --- docs/en-us/user/configuration/xml.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en-us/user/configuration/xml.md b/docs/en-us/user/configuration/xml.md index 6789ffc..b6162da 100644 --- a/docs/en-us/user/configuration/xml.md +++ b/docs/en-us/user/configuration/xml.md @@ -45,7 +45,7 @@ Or: tag | purpose | introduction - | - | - -`` | Service Export | Used to export service, define service metadata, export service with mutiple protocols, register service to multiple registries +`` | Service Export | Used to export service, define service metadata, export service with multiple protocols, register service to multiple registries `` | Service Reference | Used to create a remote proxy, subscribe to multiple registries `` | Protocol Config | Configure the protocol for services on provider side, the consumer side follows. `` | Application Config | Applies to both provider and consumer.
[incubator-dubbo-website] branch asf-site updated: add check
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 4103820 add check 4103820 is described below commit 410382074d3e54fee23dfddebaf1b9d05cb3fe0a Author: zhuyong AuthorDate: Wed Oct 10 08:58:40 2018 +0800 add check --- 404.html | 28 ++-- build/blog.js | 6 +++--- build/blogDetail.js | 6 +++--- build/community.js| 6 +++--- build/documentation.js| 6 +++--- build/home.js | 6 +++--- en-us/blog/tracing-with-skywalking.html | 10 +- en-us/blog/tracing-with-skywalking.json | 2 +- en-us/docs/admin/ops/skywalking.html | 10 +- en-us/docs/admin/ops/skywalking.json | 2 +- index.html| 28 ++-- redirect.ejs | 28 ++-- zh-cn/blog/prepare-an-apache-release.html | 4 ++-- zh-cn/blog/prepare-an-apache-release.json | 2 +- 14 files changed, 60 insertions(+), 84 deletions(-) diff --git a/404.html b/404.html index a45ce11..978e267 100644 --- a/404.html +++ b/404.html @@ -7,6 +7,16 @@ http://www.apache.org/events/current-event;>Apache Dubbo is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the comp [...] + http://dubbo.apache.org/img/apache_logo.png"/> + +ASF +http://www.apache.org;>Foundation +http://www.apache.org/licenses/;>License +http://www.apache.org/events/current-event;>Events +http://www.apache.org/foundation/sponsorship.html;>Sponsorship +http://www.apache.org/foundation/thanks.html;>Thanks + + Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. @@ -18,23 +28,5 @@ } window.location = window.rootPath + '/' + lang; - - \ No newline at end of file diff --git a/build/blog.js b/build/blog.js index 39d166d..dc2eb7b 100644 --- a/build/blog.js +++ b/build/blog.js @@ -1,6 +1,6 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=79) [...] - Copyright (c) 2016 Jed Watson. +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/build/",t(t.s=77) [...] + Copyright (c) 2017 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;thttp://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t - https://github.com/apache/incubator-skywalking;>Apache Skywalking(Incubator) is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. https://github.com/apache/incubator-skywalking;>Apache skywalking (incubator) collects and analyzes the trace data and generates the relationship between the application and the service metric, Apache skywalking (incubating) supports multiple la [...] Currently, Skywalking has supported analysis the operation of distributed systems fro
[incubator-dubbo-website] branch asf-site updated: build site
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git The following commit(s) were added to refs/heads/asf-site by this push: new 7a6d635 build site 7a6d635 is described below commit 7a6d6351021edd6a35b23c55d88bdde915fbe4d3 Author: zhuyong AuthorDate: Wed Oct 10 12:22:31 2018 +0800 build site --- 404.html | 1 + index.html | 1 + redirect.ejs | 1 + 3 files changed, 3 insertions(+) diff --git a/404.html b/404.html index 978e267..9adb33a 100644 --- a/404.html +++ b/404.html @@ -17,6 +17,7 @@ http://www.apache.org/foundation/thanks.html;>Thanks Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. + https://www.apache.org/security/;> diff --git a/index.html b/index.html index 978e267..9adb33a 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,7 @@ <li><a href="<a rel="nofollow" href="http://www.apache.org/foundation/thanks.html"">http://www.apache.org/foundation/thanks.html"</a>;>Thanks</a></li> </ul> <p style="display: none">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p> + <a style="display: none" href="<a rel="nofollow" href="https://www.apache.org/security/"">https://www.apache.org/security/"</a>;></a> <!-- 添加Apache校验项结束 --> <script src="//cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"> diff --git a/redirect.ejs b/redirect.ejs index d74f8a4..685f13e 100644 --- a/redirect.ejs +++ b/redirect.ejs @@ -17,6 +17,7 @@ <li><a href="<a rel="nofollow" href="http://www.apache.org/foundation/thanks.html"">http://www.apache.org/foundation/thanks.html"</a>;>Thanks</a></li> </ul> <p style="display: none">Copyright © 2018 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p> + <a style="display: none" href="<a rel="nofollow" href="https://www.apache.org/security/"">https://www.apache.org/security/"</a>;></a> <!-- 添加Apache校验项结束 --> <script src="//cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js">
[incubator-dubbo] branch 2.6.x updated: fix #1641, support get system load on windows. (#2621)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 0b94b35 fix #1641, support get system load on windows. (#2621) 0b94b35 is described below commit 0b94b35992259747611ffae2d807f87b4ed4b705 Author: Jerrick Zhu AuthorDate: Wed Oct 10 10:59:59 2018 +0800 fix #1641, support get system load on windows. (#2621) --- .../com/alibaba/dubbo/common/status/support/LoadStatusChecker.java | 5 + 1 file changed, 5 insertions(+) diff --git a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java index 20715c5..0ed290f 100644 --- a/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java +++ b/dubbo-common/src/main/java/com/alibaba/dubbo/common/status/support/LoadStatusChecker.java @@ -37,6 +37,11 @@ public class LoadStatusChecker implements StatusChecker { try { Method method = OperatingSystemMXBean.class.getMethod("getSystemLoadAverage", new Class[0]); load = (Double) method.invoke(operatingSystemMXBean, new Object[0]); +if (load == -1) { +com.sun.management.OperatingSystemMXBean bean = +(com.sun.management.OperatingSystemMXBean) operatingSystemMXBean; +load = bean.getSystemCpuLoad(); +} } catch (Throwable e) { load = -1; }
[incubator-dubbo] branch master updated: fix #2600 add javadoc-plugin to dubbo-all module (#2604)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/master by this push: new 046bc30 fix #2600 add javadoc-plugin to dubbo-all module (#2604) 046bc30 is described below commit 046bc3081f7a98d539f9fb1b9af375ad80868ea8 Author: Jerrick Zhu AuthorDate: Tue Oct 9 08:49:48 2018 +0800 fix #2600 add javadoc-plugin to dubbo-all module (#2604) --- dubbo-all/pom.xml | 39 +++ 1 file changed, 39 insertions(+) diff --git a/dubbo-all/pom.xml b/dubbo-all/pom.xml index 7a1cdd3..f26a1e2 100644 --- a/dubbo-all/pom.xml +++ b/dubbo-all/pom.xml @@ -556,4 +556,43 @@ + + + +release + + + +maven-javadoc-plugin +${maven_javadoc_version} + + +attach-javadoc + +jar + + +none + + + + + true + + org.apache.dubbo:dubbo-* + com.alibaba:hessian-* + +public +UTF-8 +UTF-8 +UTF-8 + + http://docs.oracle.com/javase/7/docs/api + + + + + + + \ No newline at end of file
[incubator-dubbo] branch 2.6.x updated: Removed jdk9 from .travis.yml. (#2609)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new c4eb4e8 Removed jdk9 from .travis.yml. (#2609) c4eb4e8 is described below commit c4eb4e8ceb14965f2abd881b70ba6f1f994d3940 Author: cbolgiano AuthorDate: Mon Oct 8 20:50:29 2018 -0400 Removed jdk9 from .travis.yml. (#2609) --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5aaa1ba..a6c3dcc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ language: java sudo: false # faster builds jdk: -- oraclejdk9 - oraclejdk8 - openjdk7
[incubator-dubbo] annotated tag dubbo-2.6.5 updated (f99f8f2 -> 3c05793)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to annotated tag dubbo-2.6.5 in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. *** WARNING: tag dubbo-2.6.5 was modified! *** from f99f8f2 (commit) to 3c05793 (tag) tagging f99f8f204f38e96bb1cab7f52d5fdf4ccd62d033 (commit) replaces dubbo-2.6.4 by zhuyong on Tue Oct 9 10:30:50 2018 +0800 - Log - [maven-release-plugin] copy for tag dubbo-2.6.5 --- No new revisions were added by this update. Summary of changes:
[incubator-dubbo] branch 2.6.5-release-staging created (now 0375a61)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch 2.6.5-release-staging in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. at 0375a61 [maven-release-plugin] prepare for next development iteration This branch includes the following new commits: new f99f8f2 [maven-release-plugin] prepare release dubbo-2.6.5 new 0375a61 [maven-release-plugin] prepare for next development iteration The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference.
[incubator-dubbo] 02/02: [maven-release-plugin] prepare for next development iteration
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.5-release-staging in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git commit 0375a61ad692d2815b554d28a43194c193d786ab Author: zhuyong AuthorDate: Tue Oct 9 10:30:51 2018 +0800 [maven-release-plugin] prepare for next development iteration --- all/pom.xml| 4 ++-- bom/pom.xml| 4 ++-- dependencies-bom/pom.xml | 4 ++-- distribution/pom.xml | 2 +- dubbo-bootstrap/pom.xml| 2 +- dubbo-cluster/pom.xml | 2 +- dubbo-common/pom.xml | 2 +- dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-config/dubbo-config-spring/pom.xml | 2 +- dubbo-config/pom.xml | 2 +- dubbo-container/dubbo-container-api/pom.xml| 2 +- dubbo-container/dubbo-container-log4j/pom.xml | 2 +- dubbo-container/dubbo-container-logback/pom.xml| 2 +- dubbo-container/dubbo-container-spring/pom.xml | 2 +- dubbo-container/pom.xml| 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-consumer/pom.xml | 2 +- dubbo-demo/dubbo-demo-provider/pom.xml | 2 +- dubbo-demo/pom.xml | 2 +- dubbo-filter/dubbo-filter-cache/pom.xml| 2 +- dubbo-filter/dubbo-filter-validation/pom.xml | 2 +- dubbo-filter/pom.xml | 2 +- dubbo-monitor/dubbo-monitor-api/pom.xml| 2 +- dubbo-monitor/dubbo-monitor-default/pom.xml| 2 +- dubbo-monitor/pom.xml | 2 +- dubbo-plugin/dubbo-qos/pom.xml | 2 +- dubbo-plugin/pom.xml | 2 +- dubbo-registry/dubbo-registry-api/pom.xml | 2 +- dubbo-registry/dubbo-registry-default/pom.xml | 2 +- dubbo-registry/dubbo-registry-multicast/pom.xml| 2 +- dubbo-registry/dubbo-registry-redis/pom.xml| 2 +- dubbo-registry/dubbo-registry-zookeeper/pom.xml| 2 +- dubbo-registry/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-api/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-grizzly/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-http/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-mina/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-netty/pom.xml| 2 +- dubbo-remoting/dubbo-remoting-netty4/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-p2p/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-zookeeper/pom.xml| 2 +- dubbo-remoting/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-api/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-dubbo/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-hessian/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-http/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-injvm/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-memcached/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-redis/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rest/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rmi/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-thrift/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-webservice/pom.xml | 2 +- dubbo-rpc/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-api/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-fastjson/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-fst/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-hessian2/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-jdk/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-kryo/pom.xml | 2 +- dubbo-serialization/pom.xml| 2 +- dubbo-test/dubbo-test-benchmark/pom.xml| 2 +- dubbo-test/dubbo-test-compatibility/dubbo-test-spring3/pom.xml | 2 +- dubbo-test/dubbo-test-compatibility/pom.xml| 2 +- dubbo-test/dubbo-test-examples/pom.xml | 2
[incubator-dubbo] branch 2.6.5-release-staging deleted (was 2c56668)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a change to branch 2.6.5-release-staging in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git. was 2c56668 [maven-release-plugin] prepare for next development iteration This change permanently discards the following revisions: discard 2c56668 [maven-release-plugin] prepare for next development iteration
[incubator-dubbo] branch 2.6.x updated: update release script (#2615)
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.x in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git The following commit(s) were added to refs/heads/2.6.x by this push: new 5adb9bf update release script (#2615) 5adb9bf is described below commit 5adb9bfb59acdba3115f2b4cd1d9ec72ecec42cc Author: Jerrick Zhu AuthorDate: Tue Oct 9 11:46:53 2018 +0800 update release script (#2615) --- release.sh | 334 + 1 file changed, 114 insertions(+), 220 deletions(-) diff --git a/release.sh b/release.sh index e33940e..d5e9401 100755 --- a/release.sh +++ b/release.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. @@ -14,26 +14,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -# set -e -# set -x - -function fail { ->&2 echo "\033[31m\033[01m[ -FATAL ERROR: --- -$1 ]\033[0m" - -echo "Clear current work dir" -git add . -git commit -m 'Failed preparation for release.' -exit 1 -} function fail_noclear { ->&2 echo "\033[31m\033[01m[ -FATAL ERROR: +>&2 echo "FATAL ERROR: -- -$1 ]\033[0m" +$1" exit 1 } @@ -44,142 +29,58 @@ xpath /pom:project/pom:version/text() EOF } -function generate_promotion_script { -echo "Generating release promotion script 'promote-$version.sh'" -read -d '' script <<- EOF -#!/bin/bash -echo "Promoting release $version -Actions about to be performed: --- -\$(cat \$0 | tail -n +14) ---" -read -p "Press enter to continue or CTRL-C to abort" -# promote the source distribution by moving it from the staging area to the release area -# mv https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version https://dist.apache.org/repos/dist/release/incubator/dubbo/ -m "Upload release to the mirrors" -#mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-release -DstagingRepositoryId=$stagingRepositoryId -DnexusUrl=https://oss.sonatype.org/ -DserverId=sonatype-nexus-staging -Ddescription="Release vote has passed" -# Renumber the next development iteration $next_version: -git checkout $branch -mvn release:update-versions --batch-mode -mvn versions:set versions:commit -DprocessAllModules=true -DnewVersion=$next_version -git add --all -git commit -m 'Start the next development version' -echo " -Please check the new versions and merge $branch to the base branch. -" -EOF - -echo "$script" > promote-$version.sh -chmod +x promote-$version.sh -git add promote-$version.sh -} - -function generate_rollback_script { - echo "Generating release rollback script 'revert-$version.sh'" -read -d '' script <<- EOF -#!/bin/bash -echo -n "Reverting release $version -Actions about to be performed: --- -\$(cat \$0 | tail -n +14) --- -Press enter to continue or CTRL-C to abort" -read -# clean up local repository -git checkout $GIT_BRANCH -git branch -D $branch -git tag -d $tag -# clean up staging dist area -#svn rm https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version -m "Release vote has failed" -# clean up staging maven repository -#mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:rc-drop -DstagingRepositoryId=$stagingrepoid -DnexusUrl=https://oss.sonatype.org/ -DserverId=sonatype-nexus-staging -Ddescription="Release vote has failed" -# clean up remaining release files -find . -name "*.releaseBackup" -exec rm {} \\; -[ -f release.properties ] && rm release.properties -EOF -echo "$script" > revert-$version.sh - - chmod +x revert-$version.sh - git add revert-$version.sh -} - -function generate_release_vote_email { - -echo "Generating Vote email" - -echo " -Hello Dubbo Community, - -This is a call for vote to release Apache Dubbo (Incubating) version $version. - -The release candidates (RC5): -https://dist.apache.org/repos/dist/dev/incubator/dubbo/$version +REPO="" +BRANCH="" -Git tag for the release (RC5): -https://github.com/apache/incubator-dubbo/tree/dubbo-$version -Hash for the release tag: -3963d8fd93642398375ea92acb7ed4d2bc1b0518 - -Release Notes: -https://github.com/apache/incubator-dubbo/blob/dubbo-$version/CHANGES.md - -The artifacts have been signed with Key : 28681CB1, which can be found in the keys file:
[incubator-dubbo] 01/02: [maven-release-plugin] prepare release dubbo-2.6.5
This is an automated email from the ASF dual-hosted git repository. jerrick pushed a commit to branch 2.6.5-release-staging in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git commit dae220ad98305f77cf68d7e338ba512ec38fd72b Author: zhuyong AuthorDate: Tue Oct 9 10:44:10 2018 +0800 [maven-release-plugin] prepare release dubbo-2.6.5 --- all/pom.xml| 4 ++-- bom/pom.xml| 4 ++-- dependencies-bom/pom.xml | 4 ++-- distribution/pom.xml | 2 +- dubbo-bootstrap/pom.xml| 2 +- dubbo-cluster/pom.xml | 2 +- dubbo-common/pom.xml | 2 +- dubbo-config/dubbo-config-api/pom.xml | 2 +- dubbo-config/dubbo-config-spring/pom.xml | 2 +- dubbo-config/pom.xml | 2 +- dubbo-container/dubbo-container-api/pom.xml| 2 +- dubbo-container/dubbo-container-log4j/pom.xml | 2 +- dubbo-container/dubbo-container-logback/pom.xml| 2 +- dubbo-container/dubbo-container-spring/pom.xml | 2 +- dubbo-container/pom.xml| 2 +- dubbo-demo/dubbo-demo-api/pom.xml | 2 +- dubbo-demo/dubbo-demo-consumer/pom.xml | 2 +- dubbo-demo/dubbo-demo-provider/pom.xml | 2 +- dubbo-demo/pom.xml | 2 +- dubbo-filter/dubbo-filter-cache/pom.xml| 2 +- dubbo-filter/dubbo-filter-validation/pom.xml | 2 +- dubbo-filter/pom.xml | 2 +- dubbo-monitor/dubbo-monitor-api/pom.xml| 2 +- dubbo-monitor/dubbo-monitor-default/pom.xml| 2 +- dubbo-monitor/pom.xml | 2 +- dubbo-plugin/dubbo-qos/pom.xml | 2 +- dubbo-plugin/pom.xml | 2 +- dubbo-registry/dubbo-registry-api/pom.xml | 2 +- dubbo-registry/dubbo-registry-default/pom.xml | 2 +- dubbo-registry/dubbo-registry-multicast/pom.xml| 2 +- dubbo-registry/dubbo-registry-redis/pom.xml| 2 +- dubbo-registry/dubbo-registry-zookeeper/pom.xml| 2 +- dubbo-registry/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-api/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-grizzly/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-http/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-mina/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-netty/pom.xml| 2 +- dubbo-remoting/dubbo-remoting-netty4/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-p2p/pom.xml | 2 +- dubbo-remoting/dubbo-remoting-zookeeper/pom.xml| 2 +- dubbo-remoting/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-api/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-dubbo/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-hessian/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-http/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-injvm/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-memcached/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-redis/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rest/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-rmi/pom.xml| 2 +- dubbo-rpc/dubbo-rpc-thrift/pom.xml | 2 +- dubbo-rpc/dubbo-rpc-webservice/pom.xml | 2 +- dubbo-rpc/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-api/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-fastjson/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-fst/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-hessian2/pom.xml | 2 +- dubbo-serialization/dubbo-serialization-jdk/pom.xml| 2 +- dubbo-serialization/dubbo-serialization-kryo/pom.xml | 2 +- dubbo-serialization/pom.xml| 2 +- dubbo-test/dubbo-test-benchmark/pom.xml| 2 +- dubbo-test/dubbo-test-compatibility/dubbo-test-spring3/pom.xml | 2 +- dubbo-test/dubbo-test-compatibility/pom.xml| 2 +- dubbo-test/dubbo-test-examples/pom.xml | 2 +- dubbo-test