You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/08/30 05:49:14 UTC
[dubbo] branch 3.0-multi-instances updated: Add ServiceModel pass
when invoke
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0-multi-instances
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0-multi-instances by this push:
new 3327d2f Add ServiceModel pass when invoke
3327d2f is described below
commit 3327d2ffe247fcdc49befd41f02721ab83ec7bbe
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Mon Aug 30 13:48:53 2021 +0800
Add ServiceModel pass when invoke
---
.../dubbo/rpc/cluster/directory/MockDirInvocation.java | 5 +++++
.../dubbo/common/url/component/DubboServiceAddressURL.java | 12 ++++++++++++
.../src/main/java/com/alibaba/dubbo/rpc/Invocation.java | 10 ++++++++++
.../test/java/org/apache/dubbo/service/MockInvocation.java | 5 +++++
.../org/apache/dubbo/registry/client/InstanceAddressURL.java | 12 ++++++++++++
.../apache/dubbo/registry/integration/RegistryProtocol.java | 2 ++
.../src/main/java/org/apache/dubbo/rpc/Invocation.java | 2 ++
.../src/main/java/org/apache/dubbo/rpc/RpcInvocation.java | 5 +++++
.../java/org/apache/dubbo/rpc/support/MockInvocation.java | 5 +++++
.../org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java | 1 +
10 files changed, 59 insertions(+)
diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
index 9a0d7c1..75ad1cc 100644
--- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
@@ -131,6 +131,11 @@ public class MockDirInvocation implements Invocation {
}
@Override
+ public void setServiceModel(ServiceModel serviceModel) {
+
+ }
+
+ @Override
public ServiceModel getServiceModel() {
return null;
}
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/DubboServiceAddressURL.java b/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/DubboServiceAddressURL.java
index fbb31b6..840efcb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/DubboServiceAddressURL.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/DubboServiceAddressURL.java
@@ -18,6 +18,8 @@ package org.apache.dubbo.common.url.component;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ServiceModel;
import java.util.Map;
import java.util.Objects;
@@ -102,6 +104,16 @@ public class DubboServiceAddressURL extends ServiceAddressURL {
}
@Override
+ public ScopeModel getScopeModel() {
+ return consumerURL.getScopeModel();
+ }
+
+ @Override
+ public ServiceModel getServiceModel() {
+ return consumerURL.getServiceModel();
+ }
+
+ @Override
public int hashCode() {
final int prime = 31;
return prime * super.hashCode() + (overrideURL == null ? 0 : overrideURL.hashCode());
diff --git a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java
index 1c10ee4..d8ae4e3 100644
--- a/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java
+++ b/dubbo-compatible/src/main/java/com/alibaba/dubbo/rpc/Invocation.java
@@ -77,6 +77,11 @@ public interface Invocation extends org.apache.dubbo.rpc.Invocation {
}
@Override
+ default void setServiceModel(ServiceModel serviceModel) {
+
+ }
+
+ @Override
default ServiceModel getServiceModel() {
return null;
}
@@ -165,6 +170,11 @@ public interface Invocation extends org.apache.dubbo.rpc.Invocation {
}
@Override
+ public void setServiceModel(ServiceModel serviceModel) {
+ delegate.setServiceModel(serviceModel);
+ }
+
+ @Override
public ServiceModel getServiceModel() {
return delegate.getServiceModel();
}
diff --git a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java b/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java
index 299dbce..532f6bd 100644
--- a/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java
+++ b/dubbo-compatible/src/test/java/org/apache/dubbo/service/MockInvocation.java
@@ -133,6 +133,11 @@ public class MockInvocation implements Invocation {
}
@Override
+ public void setServiceModel(ServiceModel serviceModel) {
+
+ }
+
+ @Override
public ServiceModel getServiceModel() {
return null;
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
index 46cc333..506dcd2 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/InstanceAddressURL.java
@@ -22,6 +22,8 @@ import org.apache.dubbo.common.url.component.URLParam;
import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.metadata.MetadataInfo;
import org.apache.dubbo.rpc.RpcContext;
+import org.apache.dubbo.rpc.model.ScopeModel;
+import org.apache.dubbo.rpc.model.ServiceModel;
import java.util.HashMap;
import java.util.Map;
@@ -392,6 +394,16 @@ public class InstanceAddressURL extends URL {
}
@Override
+ public ScopeModel getScopeModel() {
+ return RpcContext.getServiceContext().getConsumerUrl().getScopeModel();
+ }
+
+ @Override
+ public ServiceModel getServiceModel() {
+ return RpcContext.getServiceContext().getConsumerUrl().getServiceModel();
+ }
+
+ @Override
public boolean equals(Object obj) {
// instance metadata equals
if (obj == null) {
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
index ca9bdfd..fc2902b 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java
@@ -532,6 +532,8 @@ public class RegistryProtocol implements Protocol, ScopeModelAware {
URL urlToRegistry = new ServiceConfigURL(
parameters.get(PROTOCOL_KEY) == null ? DUBBO : parameters.get(PROTOCOL_KEY),
parameters.remove(REGISTER_IP_KEY), 0, getPath(parameters, type), parameters);
+ urlToRegistry = urlToRegistry.setScopeModel(directory.getConsumerUrl().getScopeModel());
+ urlToRegistry = urlToRegistry.setServiceModel(directory.getConsumerUrl().getServiceModel());
if (directory.isShouldRegister()) {
directory.setRegisteredConsumerUrl(urlToRegistry);
registry.register(directory.getRegisteredConsumerUrl());
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Invocation.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Invocation.java
index 04bbdc8..19a0434 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Invocation.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Invocation.java
@@ -139,6 +139,8 @@ public interface Invocation {
*/
Invoker<?> getInvoker();
+ void setServiceModel(ServiceModel serviceModel);
+
ServiceModel getServiceModel();
Object put(Object key, Object value);
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java
index a828ca0..eb1af93 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcInvocation.java
@@ -486,6 +486,11 @@ public class RpcInvocation implements Invocation, Serializable {
}
@Override
+ public void setServiceModel(ServiceModel serviceModel) {
+ this.serviceModel = serviceModel;
+ }
+
+ @Override
public ServiceModel getServiceModel() {
return serviceModel;
}
diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
index be78c14..2c8a618 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
@@ -119,6 +119,11 @@ public class MockInvocation implements Invocation {
}
@Override
+ public void setServiceModel(ServiceModel serviceModel) {
+
+ }
+
+ @Override
public ServiceModel getServiceModel() {
return null;
}
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
index 8452d08..680b0b4 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java
@@ -118,6 +118,7 @@ public class DubboProtocol extends AbstractProtocol {
Invocation inv = (Invocation) message;
Invoker<?> invoker = getInvoker(channel, inv);
+ inv.setServiceModel(invoker.getUrl().getServiceModel());
// need to consider backward-compatibility if it's a callback
if (Boolean.TRUE.toString().equals(inv.getObjectAttachments().get(IS_CALLBACK_SERVICE_INVOKE))) {
String methodsStr = invoker.getUrl().getParameters().get("methods");