From cfd0be3a3a542269ad080ede13deae6ac6745f55 Mon Sep 17 00:00:00 2001 From: icodening Date: Fri, 1 Sep 2023 17:05:45 +0800 Subject: [PATCH] fix h1 and grpc status code (#12994) --- .../remoting/http12/AbstractServerHttpChannelObserver.java | 3 +++ .../protocol/tri/h12/AbstractServerTransportListener.java | 2 +- .../tri/h12/grpc/GrpcHttp2ServerTransportListener.java | 7 +++++++ .../h12/http1/DefaultHttp11ServerTransportListener.java | 2 ++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/AbstractServerHttpChannelObserver.java b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/AbstractServerHttpChannelObserver.java index 3e0b2a9b75..adc23ec718 100644 --- a/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/AbstractServerHttpChannelObserver.java +++ b/dubbo-remoting/dubbo-remoting-http12/src/main/java/org/apache/dubbo/remoting/http12/AbstractServerHttpChannelObserver.java @@ -16,6 +16,7 @@ */ package org.apache.dubbo.remoting.http12; +import org.apache.dubbo.remoting.http12.exception.EncodeException; import org.apache.dubbo.remoting.http12.exception.HttpStatusException; import org.apache.dubbo.remoting.http12.message.HttpMessageCodec; @@ -119,6 +120,8 @@ public abstract class AbstractServerHttpChannelObserver implements CustomizableH HttpOutputMessage httpOutputMessage = encodeHttpOutputMessage(errorResponse); this.httpMessageCodec.encode(httpOutputMessage.getBody(), errorResponse); getHttpChannel().writeMessage(httpOutputMessage); + } catch (Throwable ex) { + throwable = new EncodeException(ex); } finally { doOnCompleted(throwable); } diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java index a294d61e2a..1e442d1e5c 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/AbstractServerTransportListener.java @@ -161,7 +161,7 @@ public abstract class AbstractServerTransportListener
invoker, ServiceDescriptor serviceDescriptor, MethodDescriptor methodDescriptor) { RpcInvocation rpcInvocation = super.buildRpcInvocation(invoker, serviceDescriptor, methodDescriptor); diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/http1/DefaultHttp11ServerTransportListener.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/http1/DefaultHttp11ServerTransportListener.java index e8c880753e..c7d34b1a87 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/http1/DefaultHttp11ServerTransportListener.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/http1/DefaultHttp11ServerTransportListener.java @@ -81,6 +81,8 @@ public class DefaultHttp11ServerTransportListener extends AbstractServerTranspor MethodDescriptor methodDescriptor = findMethodDescriptor(getServiceDescriptor(), originalMethodName, hasStub); MethodMetadata methodMetadata = MethodMetadata.fromMethodDescriptor(methodDescriptor); RpcInvocation rpcInvocation = buildRpcInvocation(getInvoker(), getServiceDescriptor(), methodDescriptor); + setMethodDescriptor(methodDescriptor); + setMethodMetadata(methodMetadata); setRpcInvocation(rpcInvocation); HttpMessageCodec httpMessageCodec = getHttpMessageCodec(); ListeningDecoder listeningDecoder = newListeningDecoder(httpMessageCodec, methodMetadata.getActualRequestTypes());