[fix](brpc) Embed serialized request into the attachment and transmit it through http brpc#9803
Conversation
d621af9 to
35a5bbb
Compare
| repeated string channels = 2; | ||
| }; | ||
|
|
||
| message PEchoRequest {}; |
There was a problem hiding this comment.
why named PEchoRequest ? what dose echo mean
There was a problem hiding this comment.
In the official example of brpc, use EchoRequest to represent empty Request.
There was a problem hiding this comment.
brpc called EchoRequest because of it's service called echo
you can use PEmptyRequest or PEmptyTransmitDataParams
35a5bbb to
2d67c8b
Compare
|
@yangzhg @morningman PTAL |
| PTransmitDataResult* response, | ||
| google::protobuf::Closure* done) { | ||
| SCOPED_SWITCH_BTHREAD(); | ||
| PTransmitDataParams* request_raw = new PTransmitDataParams(); |
There was a problem hiding this comment.
In the new NewHttpClosure delete req and call the old done.run.
0356ec2 to
3145593
Compare
|
PR approved by at least one committer and no changes requested. |
|
PR approved by anyone and no changes requested. |
|
|
fix, modified to |
5d22d9a to
7735848
Compare
7735848 to
21e8a38
Compare
21e8a38 to
d30e9dc
Compare
|
PR approved by at least one committer and no changes requested. |
… it through http brpc (#9803) When the length of `Tuple/Block data` is greater than 2G, serialize the protoBuf request and embed the `Tuple/Block data` into the controller attachment and transmit it through http brpc. This is to avoid errors when the length of the protoBuf request exceeds 2G: `Bad request, error_text=[E1003]Fail to compress request`. In #7164, `Tuple/Block data` was put into attachment and sent via default `baidu_std brpc`, but when the attachment exceeds 2G, it will be truncated. There is no 2G limit for sending via `http brpc`. Also, in #7921, consider putting `Tuple/Block data` into attachment transport by default, as this theoretically reduces one serialization and improves performance. However, the test found that the performance did not improve, but the memory peak increased due to the addition of a memory copy.
Proposed changes
Issue Number: close #7163
Problem Summary:
When the length of
Tuple/Block datais greater than 2G, serialize the protoBuf request and embed theTuple/Block datainto the controller attachment and transmit it through http brpc.This is to avoid errors when the length of the protoBuf request exceeds 2G:
Bad request, error_text=[E1003]Fail to compress request.In #7164,
Tuple/Block datawas put into attachment and sent via defaultbaidu_std brpc, but when the attachment exceeds 2G, it will be truncated. There is no 2G limit for sending viahttp brpc.Also, in #7921, consider putting
Tuple/Block datainto attachment transport by default, as this theoretically reduces one serialization and improves performance. However, the test found that the performance did not improve, but the memory peak increased due to the addition of a memory copy.Upgrade:
The old request transfer attachement logic is expected to be removed in V1.3, and set
transfer_large_data_by_brpcdefault true.Therefore, the version before V1.3 needs to be upgraded to V1.3 before the upgrade can continue.
Checklist(Required)
Further comments
If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...