This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch performance-tuning-2.7.x
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/performance-tuning-2.7.x by
this push:
new 34e7871 check before calling getMethodParameter
34e7871 is described below
commit 34e787119303341505a008838ca0d14b14da3284
Author: ken.lj <[email protected]>
AuthorDate: Tue Jun 4 18:07:16 2019 +0800
check before calling getMethodParameter
---
dubbo-common/src/main/java/org/apache/dubbo/common/URL.java | 7 +++++++
.../main/java/org/apache/dubbo/rpc/support/MockInvoker.java | 11 +++++++----
.../apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java | 8 ++++----
3 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
index 741b7cb..38008b6 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/URL.java
@@ -1015,6 +1015,13 @@ class URL implements Serializable {
return value != null && value.length() > 0;
}
+ public boolean hasMethodParameter(String method) {
+ if (method == null) {
+ return false;
+ }
+ return getMethodParameters().containsKey(method);
+ }
+
public boolean isLocalHost() {
return NetUtils.isLocalHost(host) || getParameter(LOCALHOST_KEY,
false);
}
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
index 90f4d69..2badc04 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
@@ -39,12 +39,12 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import static org.apache.dubbo.rpc.Constants.MOCK_KEY;
-import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX;
-import static org.apache.dubbo.rpc.Constants.THROW_PREFIX;
import static org.apache.dubbo.rpc.Constants.FAIL_PREFIX;
import static org.apache.dubbo.rpc.Constants.FORCE_PREFIX;
+import static org.apache.dubbo.rpc.Constants.MOCK_KEY;
import static org.apache.dubbo.rpc.Constants.RETURN_KEY;
+import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX;
+import static org.apache.dubbo.rpc.Constants.THROW_PREFIX;
final public class MockInvoker<T> implements Invoker<T> {
private final static ProxyFactory PROXY_FACTORY =
ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
@@ -95,10 +95,13 @@ final public class MockInvoker<T> implements Invoker<T> {
@Override
public Result invoke(Invocation invocation) throws RpcException {
- String mock = getUrl().getParameter(invocation.getMethodName() + "." +
MOCK_KEY);
if (invocation instanceof RpcInvocation) {
((RpcInvocation) invocation).setInvoker(this);
}
+ String mock = null;
+ if (getUrl().hasMethodParameter(invocation.getMethodName())) {
+ mock = getUrl().getParameter(invocation.getMethodName() + "." +
MOCK_KEY);
+ }
if (StringUtils.isBlank(mock)) {
mock = getUrl().getParameter(MOCK_KEY);
}
diff --git
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
index c82599c..e151cb6 100644
---
a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
+++
b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java
@@ -41,13 +41,13 @@ 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.METHODS_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;
import static org.apache.dubbo.rpc.Constants.CALLBACK_INSTANCES_LIMIT_KEY;
import static org.apache.dubbo.rpc.Constants.DEFAULT_CALLBACK_INSTANCES;
+import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;
+import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;
import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_PROXY_KEY;
-import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;
import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.CHANNEL_CALLBACK_KEY;
-import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;
+import static
org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;
/**
* callback service helper
@@ -65,7 +65,7 @@ class CallbackServiceCodec {
private static byte isCallBack(URL url, String methodName, int argIndex) {
// parameter callback rule: method-name.parameter-index(starting from
0).callback
byte isCallback = CALLBACK_NONE;
- if (url != null) {
+ if (url != null && url.hasMethodParameter(methodName)) {
String callback = url.getParameter(methodName + "." + argIndex +
".callback");
if (callback != null) {
if (callback.equalsIgnoreCase("true")) {