You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ProtoBuf proto3 specifies that if a message does not contain a particular singular element, the field should get the default value. However, when the C++ flight-test-integration-server gets a DoPut request with a FlightData message for a record batch containing no items, and the FlightData is missing the data_body field, the server responds with an error "Expected body in IPC message of type record batch".
What happens
If I run the C++ flight-test-integration-server and the C++ flight-test-integration-client with the generated_null_trivial test case, the test passes and I see the protobuf in wireshark shown in the cpp-client-empty-data-body.png attachment.
Note the data_body field is present but has no value.
If I run the Rust flight-test-integration-client that I'm working on developing, it does not send the data_body field at all if there are no bytes to send. I see the protobuf in wireshark shown in the rust-client-missing-data-body.png attachment.
Problem
ProtoBuf
proto3
specifies that if a message does not contain a particular singular element, the field should get the default value. However, when the C++flight-test-integration-server
gets aDoPut
request with aFlightData
message for a record batch containing no items, and theFlightData
is missing thedata_body
field, the server responds with an error "Expected body in IPC message of type record batch".What happens
If I run the C++
flight-test-integration-server
and the C++flight-test-integration-client
with thegenerated_null_trivial
test case, the test passes and I see the protobuf in wireshark shown in the cpp-client-empty-data-body.png attachment.Note the
data_body
field is present but has no value.If I run the Rust
flight-test-integration-client
that I'm working on developing, it does not send thedata_body
field at all if there are no bytes to send. I see the protobuf in wireshark shown in the rust-client-missing-data-body.png attachment.Note the
data_body
field is not present.The C++ server then returns the error message "Expected body in IPC message of type record batch", which comes from this check for message body called in
ReadNext
of the record batch stream reader.What I expect to happen
Instead of returning an error message because of a null pointer, the Message should get the default value of empty bytes.
Reporter: Carol Nichols / @carols10cents
Assignee: Carol Nichols / @carols10cents
Related issues:
Original Issue Attachments:
PRs and other links:
Note: This issue was originally created as ARROW-10960. Please see the migration documentation for further details.
The text was updated successfully, but these errors were encountered: