You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gu...@apache.org on 2021/12/10 13:16:12 UTC
[dubbo] branch 3.0 updated: [3.0-Triple] fix `grpc-message` messy code (#9375)
This is an automated email from the ASF dual-hosted git repository.
guohao pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 437c1e9 [3.0-Triple] fix `grpc-message` messy code (#9375)
437c1e9 is described below
commit 437c1e9479ed516be8a73ac7a6014c6c46be597b
Author: earthchen <ea...@gmail.com>
AuthorDate: Fri Dec 10 21:15:47 2021 +0800
[3.0-Triple] fix `grpc-message` messy code (#9375)
* sync fork
* fix `grpc-message` charset error
---
.../apache/dubbo/rpc/protocol/tri/AbstractStream.java | 6 ++++--
.../org/apache/dubbo/rpc/protocol/tri/GrpcStatus.java | 17 +++++++++++++++--
.../rpc/protocol/tri/InboundTransportObserver.java | 2 +-
.../dubbo/rpc/protocol/tri/UnaryClientStream.java | 2 +-
.../apache/dubbo/rpc/protocol/tri/GrpcStatusTest.java | 2 +-
5 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractStream.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractStream.java
index 5ba50e9..c03a4a1 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractStream.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/AbstractStream.java
@@ -333,11 +333,13 @@ public abstract class AbstractStream implements Stream {
private Metadata getTrailers(GrpcStatus grpcStatus) {
Metadata metadata = new DefaultMetadata();
- metadata.put(TripleHeaderEnum.MESSAGE_KEY.getHeader(), getGrpcMessage(grpcStatus));
+ String grpcMessage = getGrpcMessage(grpcStatus);
+ grpcMessage = GrpcStatus.encodeMessage(grpcMessage);
+ metadata.put(TripleHeaderEnum.MESSAGE_KEY.getHeader(), grpcMessage);
metadata.put(TripleHeaderEnum.STATUS_KEY.getHeader(), String.valueOf(grpcStatus.code.code));
Status.Builder builder = Status.newBuilder()
.setCode(grpcStatus.code.code)
- .setMessage(getGrpcMessage(grpcStatus));
+ .setMessage(grpcMessage);
Throwable throwable = grpcStatus.cause;
if (throwable == null) {
Status status = builder.build();
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatus.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatus.java
index b1eab70..1ae5be5 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatus.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatus.java
@@ -149,13 +149,21 @@ public class GrpcStatus {
}
}
- public static String fromMessage(String raw) {
+ public static String decodeMessage(String raw) {
if (StringUtils.isEmpty(raw)) {
return "";
}
return QueryStringDecoder.decodeComponent(raw);
}
+
+ public static String encodeMessage(String raw) {
+ if (StringUtils.isEmpty(raw)) {
+ return "";
+ }
+ return encodeComponent(raw);
+ }
+
public GrpcStatus withCause(Throwable cause) {
this.cause = cause;
return this;
@@ -182,8 +190,13 @@ public class GrpcStatus {
return "";
}
String output = limitSizeTo4KB(msg);
+ return encodeComponent(output);
+ }
+
+
+ private static String encodeComponent(String raw) {
QueryStringEncoder encoder = new QueryStringEncoder("");
- encoder.addParam("", output);
+ encoder.addParam("", raw);
// ?=
return encoder.toString().substring(2);
}
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/InboundTransportObserver.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/InboundTransportObserver.java
index 43050f1..911dffa 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/InboundTransportObserver.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/InboundTransportObserver.java
@@ -54,7 +54,7 @@ public abstract class InboundTransportObserver implements TransportObserver {
return status;
}
final String raw = metadata.get(TripleHeaderEnum.MESSAGE_KEY.getHeader()).toString();
- status = status.withDescription(GrpcStatus.fromMessage(raw));
+ status = status.withDescription(GrpcStatus.decodeMessage(raw));
return status;
}
}
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/UnaryClientStream.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/UnaryClientStream.java
index f1eae16..2873e82 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/UnaryClientStream.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/UnaryClientStream.java
@@ -64,7 +64,7 @@ public class UnaryClientStream extends AbstractClientStream implements Stream {
// support others type but now only support this
}
} catch (InvalidProtocolBufferException e) {
- e.printStackTrace();
+ LOGGER.error("tran from grpc-status-details error", e);
}
return map;
}
diff --git a/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatusTest.java b/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatusTest.java
index 0d49a0f..289d26a 100644
--- a/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatusTest.java
+++ b/dubbo-rpc/dubbo-rpc-triple/src/test/java/org/apache/dubbo/rpc/protocol/tri/GrpcStatusTest.java
@@ -28,7 +28,7 @@ class GrpcStatusTest {
final GrpcStatus status = GrpcStatus.fromCode(GrpcStatus.Code.INTERNAL)
.withDescription(origin);
Assertions.assertNotEquals(origin, status.toMessage());
- final String decoded = GrpcStatus.fromMessage(status.toMessage());
+ final String decoded = GrpcStatus.decodeMessage(status.toMessage());
Assertions.assertEquals(origin, decoded);
}