Describe the usage question you have. Please include as many useful details as possible.
Arrow version: 15.
Client: C++
Server: Java
I have a Java arrow flight server that uses doExchange to read the context, my server code is as follows, I have identified in multiple thread environment, in the tests many calls would stuck at the line FlightDescriptor descriptor = reader.getDescriptor(); in the second time(Which means the first call in the same thread usually is not blocked), and which makes the following requests also stucks.
std::vector<std::shared_ptr<RecordBatch>> UDFClient::Call(
const std::vector<std::string>& paths,
std::shared_ptr<RecordBatch>& batch) const {
// Create a FlightDescriptor using a path
FlightDescriptor descriptor = FlightDescriptor::Path(paths);
auto exchange_result = Client_->DoExchange(descriptor);
if (!exchange_result.ok()) {
throw std::runtime_error("Do exchange descriptor: "
+ exchange_result.status().ToString());
}
auto exchange = std::move(exchange_result.ValueUnsafe());
...
I understand reader.getDescriptor(); is a blocking call that will use future to wait the descriptor sent. Since doExchange in the server has been called, I assume the client auto exchange_result = Client_->DoExchange(descriptor); has been received. I can't figure what could make reader.getDescriptor(); stuck, I am reporting this to the community that want to know is this a bug or there is something I did wrong. Thank you
Describe the usage question you have. Please include as many useful details as possible.
Arrow version: 15. Client: C++ Server: Java I have a Java arrow flight server that uses doExchange to read the context, my server code is as follows, I have identified in multiple thread environment, in the tests many calls would stuck at the line
FlightDescriptor descriptor = reader.getDescriptor();
in the second time(Which means the first call in the same thread usually is not blocked), and which makes the following requests also stucks.The client code is as follows
I understand
reader.getDescriptor();
is a blocking call that will use future to wait the descriptor sent. Since doExchange in the server has been called, I assume the clientauto exchange_result = Client_->DoExchange(descriptor);
has been received. I can't figure what could makereader.getDescriptor();
stuck, I am reporting this to the community that want to know is this a bug or there is something I did wrong. Thank youComponent(s)
C++, FlightRPC, Java