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;