-
Notifications
You must be signed in to change notification settings - Fork 4k
ARROW-15282: [C++][FlightRPC] Split data methods from the underlying transport #12465
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
TODOs
|
0cfb0dd to
4b20d53
Compare
fe5f27b to
d5ea2f8
Compare
|
CC @cyb70289 if you have a chance to take a look (no pressure - this is a pretty large PR) |
cyb70289
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great ! Some nits in comments.
Will test the PR at my side. Thanks.
5d57d3c to
e835fe0
Compare
cyb70289
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
On my test machine, DoPutLargeBatch often costs 10s to finish. It's not related to this PR. I've filed a jira issue: https://issues.apache.org/jira/browse/ARROW-15793
e835fe0 to
d514c84
Compare
|
Thanks for tracking that down to the original PR. Removing the reset() fixes things. I also noticed FlightClient::Close() wasn't bound to ClientTransportImpl::Close() so that has also been fixed. |
d514c84 to
26e95cc
Compare
|
The responsibilities on the server side are difficult to understand. It looks like they are shared between 3 or 4 different classes ( |
|
Also, from a file organization standpoint, I would expect the gRPC-specific parts to be in their own files and named perhaps |
|
I can try to document it better but effectively the layers are:
Ideally transports wouldn't deal with FlightServerBase but I don't want to go through and wrap all the non-data methods quite yet. But effectively, a transport only implements ServerTransportImpl. It's just that the gRPC code is still with the rest of the Flight code; would it be easier if I went ahead and split them out? FlightService::Serivce/FlightGrpcServiceImpl are gRPC specific |
Ok, that should be doable |
|
I should also add a doc page for transports (and the Flight documentation is generally lacking; I should take the time to clean things up) |
… into transport subdir
…sting when necessary
|
I promise this is my last comment :) |
|
Thanks, I thought I checked but apparently not! |
|
Benchmark runs are scheduled for baseline = dfca6a7 and contender = bb65225. bb65225 is a master commit associated with this PR. Results will be available as each benchmark for each run completes. |
|
Thank you both for the reviews! |
Defines interfaces to add new network transports to Arrow Flight, and rewrite the gRPC implementation in terms of these interfaces. The bulk of the new APIs are in
transport.h. Where possible, code has been factored out so that transports have to implement as little as possible.