You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2018/08/27 04:36:39 UTC
[incubator-dubbo] 01/02: Merge branch 'master' into dev-metadata
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
commit 3cd4603d0a7b8db8cfeb516e59d7b8cf3d091c25
Merge: 2b80c3e f720ccb
Author: ken.lj <ke...@gmail.com>
AuthorDate: Mon Aug 27 12:32:55 2018 +0800
Merge branch 'master' into dev-metadata
# Conflicts:
# dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
# dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory
# dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java
# dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
.travis.yml | 14 +-
LICENSE | 6 +-
README.md | 8 +-
{all => dubbo-all}/pom.xml | 29 -
{bom => dubbo-bom}/pom.xml | 13 +-
.../rpc/cluster/directory/AbstractDirectory.java | 19 +-
.../loadbalance/ConsistentHashLoadBalance.java | 2 +-
.../dubbo/rpc/cluster/router/tag/TagRouter.java | 109 +++
.../rpc/cluster/router/tag/TagRouterFactory.java | 16 +-
.../cluster/support/AbstractClusterInvoker.java | 43 +-
.../cluster/support/FailoverClusterInvoker.java | 8 +-
.../support/wrapper/MockClusterInvoker.java | 2 +-
.../org.apache.dubbo.rpc.cluster.RouterFactory | 1 +
.../rpc/cluster/router/tag/TagRouterTest.java | 169 +++++
.../support/AbstractClusterInvokerTest.java | 17 +-
dubbo-common/pom.xml | 10 +
.../alibaba/dubbo/common/extension/Activate.java | 88 +--
.../java/org/apache/dubbo/common/Constants.java | 4 +
.../src/main/java/org/apache/dubbo/common/URL.java | 13 +-
.../main/java/org/apache/dubbo/common/Version.java | 6 +-
.../dubbo/common/concurrent/ListenableFuture.java | 133 ----
.../common/concurrent/ListenableFutureTask.java | 91 ---
.../apache/dubbo/common/extension/Activate.java | 4 +
.../dubbo/common/extension/ExtensionLoader.java | 31 +-
.../extension/support/ActivateComparator.java | 60 +-
.../apache/dubbo/common/logger/LoggerFactory.java | 11 +-
.../dubbo/common/logger/log4j2/Log4j2Logger.java | 128 ++++
.../common/logger/log4j2/Log4j2LoggerAdapter.java | 107 +++
.../dubbo/common/timer/HashedWheelTimer.java | 805 +++++++++++++++++++++
.../org/apache/dubbo/common/timer/Timeout.java | 55 ++
.../java/org/apache/dubbo/common/timer/Timer.java | 48 ++
.../org/apache/dubbo/common/timer/TimerTask.java | 34 +
.../org/apache/dubbo/common/utils/ClassHelper.java | 16 +-
.../org/apache/dubbo/common/utils/NetUtils.java | 89 ++-
.../org/apache/dubbo/common/utils/StringUtils.java | 2 +-
.../org/apache/dubbo/common/utils/UrlUtils.java | 11 +-
.../org.apache.dubbo.common.logger.LoggerAdapter | 3 +-
.../test/java/org/apache/dubbo/common/URLTest.java | 28 +
...askTest.java => CompletableFutureTaskTest.java} | 83 +--
.../common/extension/ExtensionLoaderTest.java | 10 +
.../activate/impl/OldActivateExt1Impl2.java | 14 +-
.../activate/impl/OldActivateExt1Impl3.java | 14 +-
.../extension/support/ActivateComparatorTest.java | 9 +-
.../dubbo/common/extension/support/OldFilter0.java | 41 +-
.../dubbo/common/extension/support/OldFilter5.java | 45 +-
.../dubbo/common/logger/LoggerAdapterTest.java | 5 +-
.../dubbo/common/logger/slf4j/Slf4jLoggerTest.java | 1 -
.../dubbo/common/timer/HashedWheelTimerTest.java | 72 ++
.../dubbo/common/utils/DubboAppenderTest.java | 2 -
.../apache/dubbo/common/utils/NetUtilsTest.java | 29 +
.../apache/dubbo/common/utils/UrlUtilsTest.java | 6 +
...he.dubbo.common.extension.activate.ActivateExt1 | 4 +-
...g.apache.dubbo.common.extension.support.Filter0 | 3 +-
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 +-
.../alibaba/dubbo/config/annotation/Reference.java | 2 +-
.../main/java/com/alibaba/dubbo/rpc/Invoker.java | 8 +-
.../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 | 16 +-
.../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 +-
.../dubbo/config/AbstractInterfaceConfig.java | 10 +-
.../dubbo/config/AbstractReferenceConfig.java | 1 -
.../apache/dubbo/config/AbstractServiceConfig.java | 10 +
.../org/apache/dubbo/config/ApplicationConfig.java | 3 +
.../org/apache/dubbo/config/ReferenceConfig.java | 2 +
.../apache/dubbo/config/annotation/Reference.java | 2 +-
.../apache/dubbo/config/annotation/Service.java | 5 +
.../apache/dubbo/config/ReferenceConfigTest.java | 45 ++
.../apache/dubbo/config/spring/AnnotationBean.java | 24 +-
.../src/main/resources/META-INF/compat/dubbo.xsd | 359 ++++-----
.../src/main/resources/META-INF/dubbo.xsd | 354 ++++-----
.../AnnotationPropertyValuesAdapterTest.java | 4 +-
.../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 +
.../org/apache/dubbo/demo/consumer/Consumer.java | 13 +-
.../org/apache/dubbo/demo/provider/Provider.java | 10 +-
.../pom.xml | 34 +-
{distribution => dubbo-distribution}/pom.xml | 0
.../src/assembly/bin-release.xml | 0
.../src/assembly/source-release.xml | 0
dubbo-metrics/dubbo-metrics-api/pom.xml | 17 +-
.../apache/dubbo/metrics/MetricManagerTest.java | 19 +-
.../org/apache/dubbo/metrics/MetricNameTest.java | 19 +-
.../monitor/support/AbstractMonitorFactory.java | 31 +-
.../dubbo/qos/protocol/QosProtocolWrapper.java | 18 +-
.../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 | 22 +-
.../qos/server/handler/HttpProcessHandlerTest.java | 16 +
.../server/handler/LocalHostPermitHandlerTest.java | 16 +
.../qos/server/handler/QosProcessHandlerTest.java | 16 +
.../server/handler/TelnetProcessHandlerTest.java | 16 +
dubbo-registry/dubbo-registry-api/pom.xml | 8 +-
.../registry/integration/RegistryDirectory.java | 2 +-
.../registry/integration/RegistryProtocol.java | 12 +-
.../registry/support/AbstractRegistryTest.java | 518 +++++++++++++
.../registry/multicast/MulticastRegistry.java | 76 +-
.../registry/multicast/MulticastRegistryTest.java | 10 +-
.../java/org/apache/dubbo/remoting/Channel.java | 3 -
.../dubbo/remoting/exchange/ExchangeChannel.java | 1 -
.../apache/dubbo/remoting/exchange/Response.java | 5 +
.../remoting/exchange/support/DefaultFuture.java | 121 +++-
.../support/header/HeaderExchangeChannel.java | 2 +-
.../support/header/HeaderExchangeHandler.java | 1 +
.../dubbo/remoting/transport/AbstractChannel.java | 1 -
.../exchange/support/DefaultFutureTest.java | 124 ++++
dubbo-remoting/dubbo-remoting-http/pom.xml | 14 +-
.../dubbo/remoting/http/jetty/JettyHttpServer.java | 30 +-
.../zookeeper/curator/CuratorZookeeperClient.java | 4 +-
.../zookeeper/zkclient/ZkClientWrapper.java | 61 +-
.../zkclient/ZkclientZookeeperClient.java | 4 +-
.../org/apache/dubbo/rpc/filter/ContextFilter.java | 2 +-
.../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 +
dubbo-rpc/dubbo-rpc-dubbo/pom.xml | 8 +-
.../protocol/dubbo/telnet/InvokeTelnetHandler.java | 13 +
.../protocol/dubbo/DubboInvokerAvilableTest.java | 1 -
.../dubbo/rpc/protocol/dubbo/MultiThreadTest.java | 13 +-
.../dubbo/ReferenceCountExchangeClientTest.java | 8 +
.../dubbo/rpc/protocol/dubbo/RpcFilterTest.java | 14 +-
.../rpc/protocol/dubbo/support/DemoService.java | 2 +
.../protocol/dubbo/support/DemoServiceImpl.java | 6 +-
.../dubbo/telnet/InvokerTelnetHandlerTest.java | 40 +
.../rpc/protocol/hessian/HessianProtocol.java | 4 +-
.../hessian/HttpClientConnectionFactory.java | 15 +-
.../dubbo/internal/org.apache.dubbo.rpc.Protocol | 2 +-
.../dubbo/rpc/protocol/rest/RpcContextFilter.java | 25 +-
.../dubbo/rpc/protocol/rest/RestProtocolTest.java | 21 +
.../dubbo/rpc/protocol/thrift/ThriftCodecTest.java | 5 +-
.../support/SerializableClassRegistry.java | 23 +-
.../support/SerializableClassRegistryTest.java | 8 +-
.../dubbo/common/serialize/fst/FstFactory.java | 5 +-
.../common/serialize/kryo/CompatibleKryo.java | 18 +-
.../serialize/kryo/utils/AbstractKryoFactory.java | 16 +-
.../serialize/kryo/utils/ReflectionUtils.java | 4 +
.../serialization/AbstractSerializationTest.java | 7 +-
pom.xml | 20 +-
186 files changed, 5460 insertions(+), 1357 deletions(-)
diff --cc dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
index 00a4fa1,52f5811..49e44f4
--- 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
@@@ -85,24 -92,23 +85,27 @@@ public abstract class AbstractDirectory
return url;
}
- public List<Router> getRouters() {
- return routers;
+ public RouterChain<T> getRouterChain() {
+ return routerChain;
+ }
+
+ public void setRouterChain(RouterChain<T> routerChain) {
+ this.routerChain = routerChain;
}
- protected void setRouters(List<Router> routers) {
+ protected void addRouters(List<Router> routers) {
// copy list
- routers = routers == null ? new ArrayList<>() : new ArrayList<>(routers);
- routers.forEach(this::addRouter);
- }
-
- protected void addRouter(Router router) {
- routerChain.addRouter(router);
- // FIXME append mock invoker selector
- // routerChain.add(new MockInvokersSelector());
+ routers = routers == null ? new ArrayList<Router>() : new ArrayList<Router>(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
+ routers.add(new MockInvokersSelector());
+ Collections.sort(routers);
+ this.routers = routers;
}
public URL getConsumerUrl() {
diff --cc dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory
index f8bd699,2d4717c..178feb6
--- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory
@@@ -1,5 -1,4 +1,6 @@@
file=org.apache.dubbo.rpc.cluster.router.file.FileRouterFactory
script=org.apache.dubbo.rpc.cluster.router.script.ScriptRouterFactory
condition=org.apache.dubbo.rpc.cluster.router.condition.ConditionRouterFactory
-tag=org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory
++tag=org.apache.dubbo.rpc.cluster.router.tag.TagRouterFactory
+configcondition=org.apache.dubbo.rpc.cluster.router.condition.config.ConfigConditionRouterFactory
+group=org.apache.dubbo.rpc.cluster.router.group.GroupRouterFactory
diff --cc dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ApplicationConfig.java
index 9369939,86d4001..ec1f3b5
--- 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,16 -71,15 +71,19 @@@ public class ApplicationConfig extends
// 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;
+ // used for dynamic configuration
+ private String config;
+ private String address;
+
// customized parameters
private Map<String, String> parameters;
diff --cc dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index 8bd469f,6374456..ec4bef4
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@@ -148,26 -129,22 +148,26 @@@ public class RegistryProtocol implement
@Override
public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException {
- //export invoker
- final ExporterChangeableWrapper<T> exporter = doLocalExport(originInvoker);
-
URL registryUrl = getRegistryUrl(originInvoker);
+ initDynamicConfiguration(registryUrl);
- //registry provider
- final Registry registry = getRegistry(originInvoker);
- final URL registeredProviderUrl = getRegisteredProviderUrl(originInvoker);
+ // url to export locally
+ URL providerUrl = getProviderUrl(originInvoker);
+ providerUrl = overrideUrlWithConfig(providerUrl);
- //to judge to delay publish whether or not
- boolean register = registeredProviderUrl.getParameter("register", true);
+ //export invoker
+ final ExporterChangeableWrapper<T> exporter = doLocalExport(originInvoker, providerUrl);
+
+ // url to registry
+ final Registry registry = getRegistry(originInvoker);
- final URL registedProviderUrl = getRegistedProviderUrl(providerUrl);
++ final URL registeredProviderUrl = getRegistedProviderUrl(providerUrl);
- ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registedProviderUrl);
+ ProviderConsumerRegTable.registerProvider(originInvoker, registryUrl, registeredProviderUrl);
+ //to judge if we need to delay publish
- boolean register = registedProviderUrl.getParameter("register", true);
++ boolean register = registeredProviderUrl.getParameter("register", true);
if (register) {
- register(registryUrl, registedProviderUrl);
+ register(registryUrl, registeredProviderUrl);
ProviderConsumerRegTable.getProviderWrapper(originInvoker).setReg(true);
}
@@@ -177,42 -154,12 +177,42 @@@
final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker);
overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);
registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);
+
+ dynamicConfiguration.addListener(overrideSubscribeUrl.getServiceKey() + Constants.CONFIGURATORS_SUFFIX, overrideSubscribeListener);
//Ensure that a new exporter instance is returned every time export
- return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registedProviderUrl);
+ return new DestroyableExporter<T>(exporter, originInvoker, overrideSubscribeUrl, registeredProviderUrl);
}
+ private <T> URL overrideUrlWithConfig(URL providerUrl) {
+ List<Configurator> dynamicConfigurators = new LinkedList<>();
+ String appRawConfig = dynamicConfiguration.getConfig(providerUrl.getParameter(Constants.APPLICATION_KEY) + Constants.CONFIGURATORS_SUFFIX, "dubbo");
+ if (!StringUtils.isEmpty(appRawConfig)) {
+ dynamicConfigurators.addAll(RegistryDirectory.configToConfiguratiors(appRawConfig));
+ }
+ String rawConfig = dynamicConfiguration.getConfig(providerUrl.getServiceKey() + Constants.CONFIGURATORS_SUFFIX, "dubbo");
+ if (!StringUtils.isEmpty(rawConfig)) {
+ dynamicConfigurators.addAll(RegistryDirectory.configToConfiguratiors(rawConfig));
+ }
+ providerUrl = getConfigedInvokerUrl(dynamicConfigurators, providerUrl);
+ return providerUrl;
+ }
+
+ private URL getConfigUrl(URL registryUrl) {
+ URL url = registryUrl.removeParameters(EXPORT_KEY, REFER_KEY).setProtocol(CONFIG_PROTOCOL);
+ String configType = registryUrl.getParameter(Constants.CONFIG_TYPE_KEY);
+ if (StringUtils.isEmpty(configType)) {
+ url = url.addParameter(Constants.CONFIG_TYPE_KEY, registryUrl.getProtocol());
+ }
+
+ String configAddress = registryUrl.getParameter(Constants.CONFIG_ADDRESS_KEY);
+ if (StringUtils.isNotEmpty(configAddress)) {
+ url = url.setAddress(configAddress);
+ }
+ return url;
+ }
+
@SuppressWarnings("unchecked")
- private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker) {
+ private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker, URL providerUrl) {
String key = getCacheKey(originInvoker);
ExporterChangeableWrapper<T> exporter = (ExporterChangeableWrapper<T>) bounds.get(key);
if (exporter == null) {