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
[C++][FlightRPC] arrow::flight::FlightClient::AuthenticateBasicToken is blocked against Ballista #36369
Comments
Yes, we need to drain all reads. The rest of the client code is careful to ensure this, but not here apparently. |
Thanks for digging through this and figuring it out... |
OK. I'll open a pull request for this. |
kou
added a commit
to kou/arrow
that referenced
this issue
Jun 29, 2023
…enticate*() We need to drain all responses from server before we call gRPC's Finish() to avoid hanging.
kou
added a commit
to kou/arrow
that referenced
this issue
Jun 30, 2023
…enticate*() We need to drain all responses from server before we call gRPC's Finish() to avoid hanging.
kou
added a commit
that referenced
this issue
Jul 1, 2023
…te*() (#36372) ### Rationale for this change We need to drain all responses from server before we call gRPC's Finish() to avoid hanging. ### What changes are included in this PR? Read all responses before calling Finish(). ### Are these changes tested? Yes. ### Are there any user-facing changes? Yes. * Closes: #36369 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
westonpace
pushed a commit
to westonpace/arrow
that referenced
this issue
Jul 7, 2023
…enticate*() (apache#36372) ### Rationale for this change We need to drain all responses from server before we call gRPC's Finish() to avoid hanging. ### What changes are included in this PR? Read all responses before calling Finish(). ### Are these changes tested? Yes. ### Are there any user-facing changes? Yes. * Closes: apache#36369 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug, including details regarding any error messages, version, and platform.
Ballista uses
admin
/password
for (Basic) authentication: https://arrow.apache.org/ballista/user-guide/flightsql.html#a-name-tool-use-the-driver-in-your-favorite-data-toolThe following Apache Arrow C++ Flight RPC client is blocked:
stream->Finish()
inGrpcClientImpl::AuthenticateBasicToken()
is blocked:https://github.com/apache/arrow/blob/main/cpp/src/arrow/flight/transport/grpc/grpc_client.cc#L762
grpc::ClientReaderWriter< W, R >::Finish
document refersgrpc::internal::ClientStreamingInterface::Finish()
document and it says:We call
stream->WritesDone()
explicitly for the former. But we don't callstream->Read()
until it returnsfalse
. Should we callstream->Read()
before we callstream->Finish()
like the following?If we call
stream->Read()
beforestream->Finish()
, the test program isn't blocked.@lidavidm What do you think about this?
Component(s)
C++, FlightRPC
The text was updated successfully, but these errors were encountered: