This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 15f4a7d7cb Revert "Local references support mergeable (#9645)" (#10707)
15f4a7d7cb is described below
commit 15f4a7d7cbbd4ba1c580f4c3673b2854cef52f0b
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Oct 9 09:08:10 2022 +0800
Revert "Local references support mergeable (#9645)" (#10707)
This reverts commit 72326f42ba2add37b5f22541ad40fc3644dbe156.
---
.../org/apache/dubbo/config/ReferenceConfig.java | 6 ++-
.../apache/dubbo/config/ReferenceConfigTest.java | 7 +--
.../dubbo/registry/multiple/MultipleRegistry.java | 2 +-
.../dubbo/rpc/protocol/injvm/InjvmInvoker.java | 9 ++--
.../dubbo/rpc/protocol/injvm/InjvmProtocol.java | 52 +---------------------
.../rpc/protocol/injvm/Hello1ServiceImpl.java | 31 -------------
.../rpc/protocol/injvm/Hello2ServiceImpl.java | 33 --------------
.../dubbo/rpc/protocol/injvm/HelloService.java | 24 ----------
.../rpc/protocol/injvm/InjvmProtocolTest.java | 40 +++--------------
9 files changed, 23 insertions(+), 181 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index 931adce942..6d5e3163a8 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -448,7 +448,11 @@ public class ReferenceConfig<T> extends
ReferenceConfigBase<T> {
URL url = new ServiceConfigURL(LOCAL_PROTOCOL, LOCALHOST_VALUE, 0,
interfaceClass.getName(), referenceParameters);
url = url.setScopeModel(getScopeModel());
url = url.setServiceModel(consumerModel);
- invoker = protocolSPI.refer(interfaceClass, url);
+ Invoker<?> withFilter = protocolSPI.refer(interfaceClass, url);
+ // Local Invoke ( Support Cluster Filter / Filter )
+ List<Invoker<?>> invokers = new ArrayList<>();
+ invokers.add(withFilter);
+ invoker = Cluster.getCluster(url.getScopeModel(),
Cluster.DEFAULT).join(new StaticDirectory(url, invokers), true);
if (logger.isInfoEnabled()) {
logger.info("Using in jvm service " + interfaceClass.getName());
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index 41943fc587..7d34883629 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -477,9 +477,10 @@ public class ReferenceConfigTest {
.initialize();
referenceConfig.init();
- Invoker<?> withFilter = ((ListenerInvokerWrapper<?>)
referenceConfig.getInvoker()).getInvoker();
- withFilter = ((MockClusterInvoker<?>)
withFilter).getDirectory().getAllInvokers().get(0);
- Assertions.assertTrue(withFilter instanceof InjvmInvoker);
+ Assertions.assertTrue(referenceConfig.getInvoker() instanceof
MockClusterInvoker);
+ Invoker<?> withFilter = ((MockClusterInvoker<?>)
referenceConfig.getInvoker()).getDirectory().getAllInvokers().get(0);
+ Assertions.assertTrue(withFilter instanceof ListenerInvokerWrapper);
+ Assertions.assertTrue(((ListenerInvokerWrapper<?>)
withFilter).getInvoker() instanceof InjvmInvoker);
URL url = withFilter.getUrl();
Assertions.assertEquals("application1",
url.getParameter("application"));
Assertions.assertEquals("value1", url.getParameter("key1"));
diff --git
a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
index be9c9c92ff..0b1e5d923e 100644
---
a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
+++
b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
@@ -253,7 +253,7 @@ public class MultipleRegistry extends AbstractRegistry {
protected static class MultipleNotifyListenerWrapper implements
NotifyListener {
- Map<URL, SingleNotifyListener> registryMap = new
ConcurrentHashMap<>(4);
+ Map<URL, SingleNotifyListener> registryMap = new
ConcurrentHashMap<URL, SingleNotifyListener>(4);
NotifyListener sourceNotifyListener;
public MultipleNotifyListenerWrapper(NotifyListener
sourceNotifyListener) {
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java
b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java
index 18c08e8236..719e036d84 100644
---
a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java
+++
b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java
@@ -42,6 +42,7 @@ import org.apache.dubbo.rpc.support.RpcUtils;
import java.lang.reflect.Type;
import java.util.HashMap;
+import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -62,7 +63,7 @@ public class InjvmInvoker<T> extends AbstractInvoker<T> {
private final String key;
- private final Exporter<?> exporter;
+ private final Map<String, Exporter<?>> exporterMap;
private final ExecutorRepository executorRepository;
@@ -70,10 +71,10 @@ public class InjvmInvoker<T> extends AbstractInvoker<T> {
private final boolean shouldIgnoreSameModule;
- InjvmInvoker(Class<T> type, URL url, String key, Exporter<?> exporter) {
+ InjvmInvoker(Class<T> type, URL url, String key, Map<String, Exporter<?>>
exporterMap) {
super(type, url);
this.key = key;
- this.exporter = exporter;
+ this.exporterMap = exporterMap;
this.executorRepository =
url.getOrDefaultApplicationModel().getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
this.paramDeepCopyUtil =
url.getOrDefaultFrameworkModel().getExtensionLoader(ParamDeepCopyUtil.class)
.getExtension(url.getParameter(CommonConstants.INJVM_COPY_UTIL_KEY,
DefaultParamDeepCopyUtil.NAME));
@@ -82,6 +83,7 @@ public class InjvmInvoker<T> extends AbstractInvoker<T> {
@Override
public boolean isAvailable() {
+ InjvmExporter<?> exporter = (InjvmExporter<?>) exporterMap.get(key);
if (exporter == null) {
return false;
} else {
@@ -91,6 +93,7 @@ public class InjvmInvoker<T> extends AbstractInvoker<T> {
@Override
public Result doInvoke(Invocation invocation) throws Throwable {
+ Exporter<?> exporter = InjvmProtocol.getExporter(exporterMap,
getUrl());
if (exporter == null) {
throw new RpcException("Service [" + key + "] not found.");
}
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
index fdc9e101f6..75a51f37be 100644
---
a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
+++
b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
@@ -18,29 +18,19 @@ package org.apache.dubbo.rpc.protocol.injvm;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.common.utils.UrlUtils;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.cluster.Cluster;
-import org.apache.dubbo.rpc.cluster.ClusterInvoker;
-import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;
-import org.apache.dubbo.rpc.cluster.support.MergeableCluster;
import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.protocol.AbstractProtocol;
import org.apache.dubbo.rpc.support.ProtocolUtils;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import static
org.apache.dubbo.common.constants.CommonConstants.BROADCAST_CLUSTER;
import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static
org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;
import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;
import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;
@@ -79,7 +69,7 @@ public class InjvmProtocol extends AbstractProtocol {
if (result == null) {
return null;
} else if (ProtocolUtils.isGeneric(
- result.getInvoker().getUrl().getParameter(GENERIC_KEY))) {
+ result.getInvoker().getUrl().getParameter(GENERIC_KEY))) {
return null;
} else {
return result;
@@ -98,15 +88,7 @@ public class InjvmProtocol extends AbstractProtocol {
@Override
public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url)
throws RpcException {
- // group="a,b" or group="*"
- String group = url.getParameter(GROUP_KEY);
- if (StringUtils.isNotEmpty(group)) {
- if ((COMMA_SPLIT_PATTERN.split(group)).length > 1 ||
"*".equals(group)) {
- return doCreateInvoker(url,
Cluster.getCluster(url.getScopeModel(), MergeableCluster.NAME), serviceType);
- }
- }
- Cluster cluster = Cluster.getCluster(url.getScopeModel(),
url.getParameter(CLUSTER_KEY));
- return doCreateInvoker(url, cluster, serviceType);
+ return new InjvmInvoker<T>(serviceType, url, url.getServiceKey(),
exporterMap);
}
public boolean isInjvmRefer(URL url) {
@@ -134,34 +116,4 @@ public class InjvmProtocol extends AbstractProtocol {
return false;
}
}
-
- @SuppressWarnings({"unchecked", "rawtypes"})
- protected <T> ClusterInvoker<T> doCreateInvoker(URL url, Cluster cluster,
Class<T> type) {
- StaticDirectory directory = new StaticDirectory(url,
getInvokers(exporterMap, url, type));
- return (ClusterInvoker<T>) cluster.join(directory, true);
- }
-
- private <T> List<Invoker<T>> getInvokers(Map<String, Exporter<?>> map, URL
url, Class<T> type) {
- List<Invoker<T>> result = new ArrayList<>();
-
- if (!url.getServiceKey().contains("*")) {
- Exporter<?> exporter = map.get(url.getServiceKey());
- InjvmInvoker<T> invoker = new InjvmInvoker<>(type, url,
url.getServiceKey(), exporter);
- result.add(invoker);
- } else {
- if (CollectionUtils.isNotEmptyMap(map)) {
- for (Exporter<?> exporter : map.values()) {
- if (UrlUtils.isServiceKeyMatch(url,
exporter.getInvoker().getUrl())) {
- URL providerUrl = exporter.getInvoker().getUrl();
- URL consumerUrl = url.addParameter(GROUP_KEY,
providerUrl.getGroup())
- .addParameter(VERSION_KEY,
providerUrl.getVersion());
- InjvmInvoker<T> invoker = new InjvmInvoker<>(type,
consumerUrl, consumerUrl.getServiceKey(), exporter);
- result.add(invoker);
- }
- }
- }
- }
-
- return result;
- }
}
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello1ServiceImpl.java
b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello1ServiceImpl.java
deleted file mode 100644
index ee5b7737e2..0000000000
---
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello1ServiceImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.rpc.protocol.injvm;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Hello1ServiceImpl implements HelloService {
-
- @Override
- public List<String> hellos() {
- List<String> res = new ArrayList<>();
- res.add("consumer-hello-1");
- return res;
- }
-}
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello2ServiceImpl.java
b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello2ServiceImpl.java
deleted file mode 100644
index 8937f5096c..0000000000
---
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/Hello2ServiceImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.rpc.protocol.injvm;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class Hello2ServiceImpl implements HelloService {
-
- @Override
- public List<String> hellos() {
- List<String> res = new ArrayList<>();
- res.add("consumer-hello-2");
- return res;
- }
-}
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/HelloService.java
b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/HelloService.java
deleted file mode 100644
index cd6bc45c62..0000000000
---
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/HelloService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * 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.rpc.protocol.injvm;
-
-import java.util.List;
-
-public interface HelloService {
- List<String> hellos();
-}
diff --git
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
index d7dd373591..4e57d054b4 100644
---
a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
+++
b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
@@ -29,16 +29,18 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
-import static org.apache.dubbo.common.constants.CommonConstants.*;
+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;
+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;
import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;
import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;
import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;
import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;
-import static org.apache.dubbo.rpc.Constants.MERGER_KEY;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -74,7 +76,7 @@ public class InjvmProtocolTest {
assertEquals(service.getSize(new String[]{"", "", ""}), 3);
service.invoke("injvm://127.0.0.1/TestService", "invoke");
- InjvmInvoker<?> injvmInvoker = new InjvmInvoker<>(DemoService.class,
URL.valueOf("injvm://127.0.0.1/TestService"), null, null);
+ InjvmInvoker<?> injvmInvoker = new InjvmInvoker<>(DemoService.class,
URL.valueOf("injvm://127.0.0.1/TestService"), null, new HashMap<>());
assertFalse(injvmInvoker.isAvailable());
}
@@ -135,36 +137,4 @@ public class InjvmProtocolTest {
assertNull(service.getAsyncResult());
}
- @Test
- public void testLocalProtocolForMergeResult() throws Exception {
- HelloService helloService1 = new Hello1ServiceImpl();
- URL url = URL.valueOf("injvm://127.0.0.1/HelloService")
- .addParameter(INTERFACE_KEY, HelloService.class.getName())
- .addParameter(APPLICATION_KEY, "consumer")
- .addParameter(GROUP_KEY, "g1");
- Invoker<?> invoker1 = proxy.getInvoker(helloService1,
HelloService.class, url);
- assertTrue(invoker1.isAvailable());
- Exporter<?> exporter1 = protocol.export(invoker1);
- exporters.add(exporter1);
-
- URL url2 = URL.valueOf("injvm://127.0.0.1/HelloService")
- .addParameter(INTERFACE_KEY, HelloService.class.getName())
- .addParameter(APPLICATION_KEY, "consumer")
- .addParameter(GROUP_KEY, "g2");
- HelloService helloService2 = new Hello2ServiceImpl();
- Invoker<?> invoker2 = proxy.getInvoker(helloService2,
HelloService.class, url2);
- assertTrue(invoker2.isAvailable());
- Exporter<?> exporter2 = protocol.export(invoker2);
- exporters.add(exporter2);
-
-
- URL referUrl = URL.valueOf("injvm://127.0.0.1/HelloService")
- .addParameter(INTERFACE_KEY, HelloService.class.getName())
- .addParameter(APPLICATION_KEY, "consumer")
- .addParameter(GROUP_KEY, "*")
- .addParameter(MERGER_KEY, "list");
- List<String> list = proxy.getProxy(protocol.refer(HelloService.class,
referUrl)).hellos();
- assertEquals(2, list.size());
- }
-
}