Skip to content

[C++][FlightRPC] Decouple Flight Serialize/Deserialize from gRPC transport #49548

@raulcd

Description

@raulcd

Describe the enhancement requested

Flight gRPC serialization and deserialization (FlightDataSerialize, FlightDataDeserialize) are implemented in flight/transport/grpc/serialization_internal.{h,cc}. Those are transport aware using grpc::ByteBuffer and/or grpc::Slice on their API. This means any code that needs to encode or decode FlightPayload/FlightData must depend on gRPC C++ internals.

We have started a PoC about gRPC Async. This is where this issue has spawned:

The above PR uses a bidi reactor which serializes/deserializes outside the gRPC's SerializationTraits hook. It is not clear whether we will provide our own BidiReactor or cookbooks for guidance in the future but both of those could use the new serialization/deserialization API and be gRPC agnostic.

We should extract transport-agnostic serialization/deserialization functions that operate on arrow::Buffer/BufferVector, and make the existing gRPC functions thin wrappers around them.

Component(s)

C++, FlightRPC

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions