Skip to content

Commit 678cdb4

Browse files
authored
[DUBBO-2988] Unrecognized the other provider (apache#3013)
* apache#2988 [Dubbo - telnet] Unrecognized the other provider * remove useless files added by accident. * fix cycle dependency * fix more cycle dependency * revert unnecessary change in demo * make unit test pass * revert LF to the original CRLF * change to use lambda * fix cycle dependency * remove useless imports * make unit test stable * make refactor change according to code review comments * refactor as review comments suggest.
1 parent 69e7204 commit 678cdb4

File tree

25 files changed

+1339
-1126
lines changed

25 files changed

+1339
-1126
lines changed

dubbo-config/dubbo-config-api/pom.xml

+2-46
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,7 @@
5959
<artifactId>dubbo-filter-cache</artifactId>
6060
<version>${project.parent.version}</version>
6161
</dependency>
62-
<dependency>
63-
<groupId>org.apache.dubbo</groupId>
64-
<artifactId>dubbo-registry-default</artifactId>
65-
<version>${project.parent.version}</version>
66-
<scope>test</scope>
67-
</dependency>
68-
<dependency>
69-
<groupId>org.apache.dubbo</groupId>
70-
<artifactId>dubbo-monitor-default</artifactId>
71-
<version>${project.parent.version}</version>
72-
<scope>test</scope>
73-
</dependency>
74-
<dependency>
75-
<groupId>org.apache.dubbo</groupId>
76-
<artifactId>dubbo-rpc-dubbo</artifactId>
77-
<version>${project.parent.version}</version>
78-
<scope>test</scope>
79-
</dependency>
62+
<!-- FIXME, we shouldn't rely on these modules, even in test scope -->
8063
<dependency>
8164
<groupId>org.apache.dubbo</groupId>
8265
<artifactId>dubbo-rpc-rmi</artifactId>
@@ -89,38 +72,11 @@
8972
<version>${project.parent.version}</version>
9073
<scope>test</scope>
9174
</dependency>
92-
<dependency>
93-
<groupId>javax.validation</groupId>
94-
<artifactId>validation-api</artifactId>
95-
<scope>test</scope>
96-
</dependency>
97-
<dependency>
98-
<groupId>org.hibernate</groupId>
99-
<artifactId>hibernate-validator</artifactId>
100-
<scope>test</scope>
101-
</dependency>
102-
<dependency>
103-
<groupId>org.glassfish</groupId>
104-
<artifactId>javax.el</artifactId>
105-
<scope>test</scope>
106-
</dependency>
10775
<dependency>
10876
<groupId>org.apache.dubbo</groupId>
10977
<artifactId>dubbo-registry-multicast</artifactId>
11078
<version>${project.parent.version}</version>
11179
<scope>test</scope>
11280
</dependency>
113-
<dependency>
114-
<groupId>org.apache.dubbo</groupId>
115-
<artifactId>dubbo-serialization-hessian2</artifactId>
116-
<version>${project.parent.version}</version>
117-
<scope>test</scope>
118-
</dependency>
119-
<dependency>
120-
<groupId>org.apache.dubbo</groupId>
121-
<artifactId>dubbo-serialization-jdk</artifactId>
122-
<version>${project.parent.version}</version>
123-
<scope>test</scope>
124-
</dependency>
12581
</dependencies>
126-
</project>
82+
</project>

dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ private void init() {
261261

262262
ref = createProxy(map);
263263

264-
ConsumerModel consumerModel = new ConsumerModel(getUniqueServiceName(), ref, interfaceClass.getMethods(), attributes);
264+
ConsumerModel consumerModel = new ConsumerModel(getUniqueServiceName(), interfaceClass, ref, interfaceClass.getMethods(), attributes);
265265
ApplicationModel.initConsumerModel(getUniqueServiceName(), consumerModel);
266266
}
267267

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public void testInjvm() throws Exception {
3434
registry.setAddress("multicast://224.5.6.7:1234");
3535

3636
ProtocolConfig protocol = new ProtocolConfig();
37-
protocol.setName("dubbo");
37+
protocol.setName("mockprotocol");
3838

3939
ServiceConfig<DemoService> demoService;
4040
demoService = new ServiceConfig<DemoService>();
@@ -69,7 +69,7 @@ public void testReferenceRetry() {
6969
RegistryConfig registry = new RegistryConfig();
7070
registry.setAddress("multicast://224.5.6.7:1234");
7171
ProtocolConfig protocol = new ProtocolConfig();
72-
protocol.setName("dubbo");
72+
protocol.setName("mockprotocol");
7373

7474
ReferenceConfig<DemoService> rc = new ReferenceConfig<DemoService>();
7575
rc.setApplication(application);
@@ -105,4 +105,4 @@ public void testReferenceRetry() {
105105
Assert.assertNotNull(demoService);
106106

107107
}
108-
}
108+
}

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/MockProtocol.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.apache.dubbo.rpc.Result;
2525
import org.apache.dubbo.rpc.RpcException;
2626

27+
import org.mockito.Mockito;
28+
2729
public class MockProtocol implements Protocol {
2830

2931
/* (non-Javadoc)
@@ -39,7 +41,7 @@ public int getDefaultPort() {
3941
* @see org.apache.dubbo.rpc.Protocol#export(org.apache.dubbo.rpc.Invoker)
4042
*/
4143
public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {
42-
return null;
44+
return Mockito.mock(Exporter.class);
4345
}
4446

4547
/* (non-Javadoc)

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/url/UrlTestBase.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public class UrlTestBase {
119119

120120
// ======================================================
121121
// data table manipulation utils
122-
// ======================================================
122+
// ======================================================
123123
protected String genParamString(Object urlKey, Object value) {
124124

125125
return (String) urlKey + "=" + value.toString();
@@ -147,8 +147,8 @@ protected void initServConf() {
147147
regConfForProvider = new RegistryConfig();
148148
regConfForService = new RegistryConfig();
149149
provConf = new ProviderConfig();
150-
protoConfForProvider = new ProtocolConfig();
151-
protoConfForService = new ProtocolConfig();
150+
protoConfForProvider = new ProtocolConfig("mockprotocol");
151+
protoConfForService = new ProtocolConfig("mockprotocol");
152152
methodConfForService = new MethodConfig();
153153
servConf = new ServiceConfig<DemoService>();
154154

@@ -208,4 +208,4 @@ protected void assertUrlStringWithLocalTable(String paramStringFromDb,
208208
}
209209
}
210210

211-
}
211+
}

dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/validation/ValidationServiceImpl.java

-37
This file was deleted.

dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/command/impl/Ls.java

+4-30
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@
2020
import org.apache.dubbo.qos.command.CommandContext;
2121
import org.apache.dubbo.qos.command.annotation.Cmd;
2222
import org.apache.dubbo.qos.textui.TTable;
23-
import org.apache.dubbo.registry.support.ConsumerInvokerWrapper;
24-
import org.apache.dubbo.registry.support.ProviderConsumerRegTable;
25-
import org.apache.dubbo.registry.support.ProviderInvokerWrapper;
2623
import org.apache.dubbo.rpc.model.ApplicationModel;
2724
import org.apache.dubbo.rpc.model.ConsumerModel;
2825
import org.apache.dubbo.rpc.model.ProviderModel;
2926

3027
import java.util.Collection;
31-
import java.util.Set;
28+
29+
import static org.apache.dubbo.registry.support.ProviderConsumerRegTable.getConsumerAddressNum;
30+
import static org.apache.dubbo.registry.support.ProviderConsumerRegTable.isRegistered;
3231

3332
@Cmd(name = "ls", summary = "ls service", example = {
3433
"ls"
@@ -58,7 +57,7 @@ public String listProvider() {
5857

5958
//Content
6059
for (ProviderModel providerModel : ProviderModelList) {
61-
tTable.addRow(providerModel.getServiceName(), isReg(providerModel.getServiceName()) ? "Y" : "N");
60+
tTable.addRow(providerModel.getServiceName(), isRegistered(providerModel.getServiceName()) ? "Y" : "N");
6261
}
6362
stringBuilder.append(tTable.rendering());
6463

@@ -88,29 +87,4 @@ public String listConsumer() {
8887

8988
return stringBuilder.toString();
9089
}
91-
92-
private boolean isReg(String serviceUniqueName) {
93-
Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getProviderInvoker(serviceUniqueName);
94-
for (ProviderInvokerWrapper providerInvokerWrapper : providerInvokerWrapperSet) {
95-
if (providerInvokerWrapper.isReg()) {
96-
return true;
97-
}
98-
}
99-
100-
return false;
101-
}
102-
103-
private int getConsumerAddressNum(String serviceUniqueName) {
104-
int count = 0;
105-
Set<ConsumerInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getConsumerInvoker(serviceUniqueName);
106-
for (ConsumerInvokerWrapper consumerInvokerWrapper : providerInvokerWrapperSet) {
107-
//TODO not thread safe,fixme
108-
int addNum = 0;
109-
if (consumerInvokerWrapper.getRegistryDirectory().getUrlInvokerMap() != null) {
110-
addNum = consumerInvokerWrapper.getRegistryDirectory().getUrlInvokerMap().size();
111-
}
112-
count += addNum;
113-
}
114-
return count;
115-
}
11690
}

dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ProviderConsumerRegTable.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.apache.dubbo.rpc.Invoker;
2424

2525
import java.util.Collections;
26+
import java.util.Map;
27+
import java.util.Objects;
2628
import java.util.Set;
2729
import java.util.concurrent.ConcurrentHashMap;
2830

@@ -86,10 +88,19 @@ public static void registerConsumer(Invoker invoker, URL registryUrl, URL consum
8688

8789
public static Set<ConsumerInvokerWrapper> getConsumerInvoker(String serviceUniqueName) {
8890
Set<ConsumerInvokerWrapper> invokers = consumerInvokers.get(serviceUniqueName);
89-
if (invokers == null) {
90-
return Collections.emptySet();
91-
}
92-
return invokers;
91+
return invokers == null ? Collections.emptySet() : invokers;
9392
}
9493

94+
public static boolean isRegistered(String serviceUniqueName) {
95+
Set<ProviderInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getProviderInvoker(serviceUniqueName);
96+
return providerInvokerWrapperSet.stream().anyMatch(ProviderInvokerWrapper::isReg);
97+
}
98+
99+
public static int getConsumerAddressNum(String serviceUniqueName) {
100+
Set<ConsumerInvokerWrapper> providerInvokerWrapperSet = ProviderConsumerRegTable.getConsumerInvoker(serviceUniqueName);
101+
return providerInvokerWrapperSet.stream()
102+
.map(w -> w.getRegistryDirectory().getUrlInvokerMap())
103+
.filter(Objects::nonNull)
104+
.mapToInt(Map::size).sum();
105+
}
95106
}

dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ApplicationModel.java

+8
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,12 @@ public static void initProviderModel(String serviceName, ProviderModel providerM
7272
LOGGER.warn("Already register the same:" + serviceName);
7373
}
7474
}
75+
76+
/**
77+
* For unit test
78+
*/
79+
public static void reset() {
80+
providedServices.clear();
81+
consumedServices.clear();
82+
}
7583
}

dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/model/ConsumerModel.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@
2929
public class ConsumerModel {
3030
private final Object proxyObject;
3131
private final String serviceName;
32+
private final Class<?> serviceInterfaceClass;
3233

3334
private final Map<Method, ConsumerMethodModel> methodModels = new IdentityHashMap<Method, ConsumerMethodModel>();
3435

35-
public ConsumerModel(String serviceName, Object proxyObject, Method[] methods, Map<String, Object> attributes) {
36+
public ConsumerModel(String serviceName, Class<?> serviceInterfaceClass, Object proxyObject, Method[] methods, Map<String, Object> attributes) {
3637
this.serviceName = serviceName;
38+
this.serviceInterfaceClass = serviceInterfaceClass;
3739
this.proxyObject = proxyObject;
3840

3941
if (proxyObject != null) {
@@ -77,6 +79,10 @@ public List<ConsumerMethodModel> getAllMethods() {
7779
return new ArrayList<ConsumerMethodModel>(methodModels.values());
7880
}
7981

82+
public Class<?> getServiceInterfaceClass() {
83+
return serviceInterfaceClass;
84+
}
85+
8086
public String getServiceName() {
8187
return serviceName;
8288
}

dubbo-rpc/dubbo-rpc-dubbo/pom.xml

+28-1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
<artifactId>dubbo-remoting-api</artifactId>
4040
<version>${project.parent.version}</version>
4141
</dependency>
42+
<dependency>
43+
<groupId>org.apache.dubbo</groupId>
44+
<artifactId>dubbo-config-api</artifactId>
45+
<version>${project.version}</version>
46+
</dependency>
4247
<dependency>
4348
<groupId>org.apache.dubbo</groupId>
4449
<artifactId>dubbo-container-api</artifactId>
@@ -77,5 +82,27 @@
7782
<version>${project.parent.version}</version>
7883
<scope>test</scope>
7984
</dependency>
85+
<dependency>
86+
<groupId>org.apache.dubbo</groupId>
87+
<artifactId>dubbo-serialization-jdk</artifactId>
88+
<version>${project.parent.version}</version>
89+
<scope>test</scope>
90+
</dependency>
91+
92+
<dependency>
93+
<groupId>javax.validation</groupId>
94+
<artifactId>validation-api</artifactId>
95+
<scope>test</scope>
96+
</dependency>
97+
<dependency>
98+
<groupId>org.hibernate</groupId>
99+
<artifactId>hibernate-validator</artifactId>
100+
<scope>test</scope>
101+
</dependency>
102+
<dependency>
103+
<groupId>org.glassfish</groupId>
104+
<artifactId>javax.el</artifactId>
105+
<scope>test</scope>
106+
</dependency>
80107
</dependencies>
81-
</project>
108+
</project>

0 commit comments

Comments
 (0)