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 2022/12/12 07:34:24 UTC
[dubbo] branch 3.2 updated: Fix triple default version (#11068)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 9508acdbd8 Fix triple default version (#11068)
9508acdbd8 is described below
commit 9508acdbd881c4de4dbd0e44ff41699f79aec1f9
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Mon Dec 12 15:34:17 2022 +0800
Fix triple default version (#11068)
---
.../src/main/java/org/apache/dubbo/rpc/Constants.java | 4 ++++
.../org/apache/dubbo/rpc/protocol/tri/RequestMetadata.java | 3 ++-
.../org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java | 1 +
.../org/apache/dubbo/rpc/protocol/tri/TripleProtocol.java | 14 +++++++++++++-
.../dubbo/rpc/protocol/tri/stream/TripleServerStream.java | 6 +++---
5 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java
index 2d1e125cbb..eb220cf752 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/Constants.java
@@ -105,4 +105,8 @@ public interface Constants {
String H2_SETTINGS_MAX_HEADER_LIST_SIZE_KEY = "dubbo.rpc.tri.max-header-list-size";
String H2_SUPPORT_NO_LOWER_HEADER_KEY = "dubbo.rpc.tri.support-no-lower-header";
+
+ String H2_IGNORE_1_0_0_KEY = "dubbo.rpc.tri.ignore-1.0.0-version";
+
+ String H2_RESOLVE_FALLBACK_TO_DEFAULT_KEY = "dubbo.rpc.tri.resolve-fallback-to-default";
}
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/RequestMetadata.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/RequestMetadata.java
index b1ea629aa9..e60af175ff 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/RequestMetadata.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/RequestMetadata.java
@@ -48,6 +48,7 @@ public class RequestMetadata {
public PackableMethod packableMethod;
public Map<String, Object> attachments;
public boolean convertNoLowerHeader;
+ public boolean ignoreDefaultVersion;
public DefaultHttp2Headers toHeaders() {
DefaultHttp2Headers header = new DefaultHttp2Headers(false);
@@ -58,7 +59,7 @@ public class RequestMetadata {
.set(TripleHeaderEnum.CONTENT_TYPE_KEY.getHeader(), TripleConstant.CONTENT_PROTO)
.set(HttpHeaderNames.TE, HttpHeaderValues.TRAILERS);
setIfNotNull(header, TripleHeaderEnum.TIMEOUT.getHeader(), timeout);
- if (!"1.0.0".equals(version)) {
+ if (!ignoreDefaultVersion || !"1.0.0".equals(version)) {
setIfNotNull(header, TripleHeaderEnum.SERVICE_VERSION.getHeader(), version);
}
setIfNotNull(header, TripleHeaderEnum.SERVICE_GROUP.getHeader(), group);
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
index f888346dba..7ad8bce6c5 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleInvoker.java
@@ -242,6 +242,7 @@ public class TripleInvoker<T> extends AbstractInvoker<T> {
meta.packableMethod = ReflectionPackableMethod.init(methodDescriptor, url);
}
meta.convertNoLowerHeader = TripleProtocol.CONVERT_NO_LOWER_HEADER;
+ meta.ignoreDefaultVersion = TripleProtocol.IGNORE_1_0_0_VERSION;
meta.method = methodDescriptor;
meta.scheme = getSchemeFromUrl(url);
// TODO read compressor from config
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleProtocol.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleProtocol.java
index 6eb117fda8..acd25dc105 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleProtocol.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TripleProtocol.java
@@ -50,6 +50,8 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutorService;
+import static org.apache.dubbo.rpc.Constants.H2_IGNORE_1_0_0_KEY;
+import static org.apache.dubbo.rpc.Constants.H2_RESOLVE_FALLBACK_TO_DEFAULT_KEY;
import static org.apache.dubbo.config.Constants.SERVER_THREAD_POOL_NAME;
import static org.apache.dubbo.rpc.Constants.H2_SUPPORT_NO_LOWER_HEADER_KEY;
@@ -67,6 +69,10 @@ public class TripleProtocol extends AbstractProtocol {
*/
public static boolean CONVERT_NO_LOWER_HEADER = false;
+ public static boolean IGNORE_1_0_0_VERSION = false;
+
+ public static boolean RESOLVE_FALLBACK_TO_DEFAULT = false;
+
private boolean versionChecked = false;
@@ -77,6 +83,10 @@ public class TripleProtocol extends AbstractProtocol {
.getDefaultExtension();
CONVERT_NO_LOWER_HEADER = ConfigurationUtils.getEnvConfiguration(ApplicationModel.defaultModel())
.getBoolean(H2_SUPPORT_NO_LOWER_HEADER_KEY, true);
+ IGNORE_1_0_0_VERSION = ConfigurationUtils.getEnvConfiguration(ApplicationModel.defaultModel())
+ .getBoolean(H2_IGNORE_1_0_0_KEY, false);
+ RESOLVE_FALLBACK_TO_DEFAULT = ConfigurationUtils.getEnvConfiguration(ApplicationModel.defaultModel())
+ .getBoolean(H2_RESOLVE_FALLBACK_TO_DEFAULT_KEY, false);
Set<String> supported = frameworkModel.getExtensionLoader(DeCompressor.class)
.getSupportedExtensions();
this.acceptEncodings = String.join(",", supported);
@@ -111,7 +121,9 @@ public class TripleProtocol extends AbstractProtocol {
invokers.add(invoker);
pathResolver.add(url.getServiceKey(), invoker);
- pathResolver.add(url.getServiceModel().getServiceModel().getInterfaceName(), invoker);
+ if (RESOLVE_FALLBACK_TO_DEFAULT) {
+ pathResolver.add(url.getServiceModel().getServiceModel().getInterfaceName(), invoker);
+ }
// set service status
triBuiltinService.getHealthStatusManager()
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java
index 26ba0001b7..d014efddf1 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/stream/TripleServerStream.java
@@ -17,7 +17,6 @@
package org.apache.dubbo.rpc.protocol.tri.stream;
-import io.netty.handler.codec.http2.Http2StreamChannel;
import org.apache.dubbo.common.URL;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
@@ -57,6 +56,7 @@ import io.netty.handler.codec.http.HttpUtil;
import io.netty.handler.codec.http2.DefaultHttp2Headers;
import io.netty.handler.codec.http2.Http2Error;
import io.netty.handler.codec.http2.Http2Headers;
+import io.netty.handler.codec.http2.Http2StreamChannel;
import io.netty.util.concurrent.Future;
import java.io.IOException;
@@ -288,10 +288,10 @@ public class TripleServerStream extends AbstractStream implements ServerStream {
TripleHeaderEnum.SERVICE_GROUP.getHeader()).toString() : null;
final String key = URL.buildKey(serviceName, group, version);
Invoker<?> invoker = pathResolver.resolve(key);
- if (invoker == null) {
+ if (invoker == null && TripleProtocol.RESOLVE_FALLBACK_TO_DEFAULT) {
invoker = pathResolver.resolve(URL.buildKey(serviceName, group, "1.0.0"));
}
- if (invoker == null) {
+ if (invoker == null && TripleProtocol.RESOLVE_FALLBACK_TO_DEFAULT) {
invoker = pathResolver.resolve(serviceName);
}
return invoker;