Skip to content

Commit

Permalink
Fix triple default version (#11068)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlbumenJ committed Dec 12, 2022
1 parent ab5d95f commit 9508acd
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -58,7 +59,7 @@ public DefaultHttp2Headers toHeaders() {
.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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ RequestMetadata createRequest(MethodDescriptor methodDescriptor, Invocation invo
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
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;

Expand All @@ -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;


Expand All @@ -77,6 +83,10 @@ public TripleProtocol(FrameworkModel frameworkModel) {
.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);
Expand Down Expand Up @@ -111,7 +121,9 @@ public void afterUnExport() {
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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -57,6 +56,7 @@
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;
Expand Down Expand Up @@ -288,10 +288,10 @@ private Invoker<?> getInvoker(Http2Headers headers, String serviceName) {
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;
Expand Down

0 comments on commit 9508acd

Please sign in to comment.