On Thu, Mar 27, 2025 at 12:01 PM David Li <lidav...@apache.org> wrote:

> It's not clear to me why (4) doesn't work. Can you speak more about the
> flow of requests here? Putting a ticket inside a FlightDescriptor makes me
> think something more complicated is going on.
>

I made a mistake in my description of method 4,  I meant FlightDescriptor
rather than "ticket". I apologize.

Method 4 would be the creation of a new FlightDescriptor that is of the CMD
type, with the original FlightDescriptor along with the predicate
information serialized in some format understandable to the server.

While technically any of these methods could work, I'm trying to achieve a
solution that could yield the most interoperability with other Flight
servers.  It seems that this may not be important as the existing ecosystem
of Flight servers don't have consistency beyond the gRPC spec.  Or there
really isn't a public ecosystem to speak of?

If there isn't really an ecosystem or a desire to foster one I'm happy to
just make a decision, send some type of "Flight client protocol" version
header so clients/servers can determine the choices made, and move forward
with implementation.


> Alternatively...just create your own gRPC service, and return whatever
> payload you need. There's no need to bend Flight to do something it wasn't
> designed to do, and apart from the Arrow/Protobuf/gRPC integrations in the
> data-carrying methods, there's no secret sauce in Flight anyways.
>


There may not be a secret sauce but there is the ease of
implementation/deployment of having everything in a single service.  Being
able to write a Flight server following the cookbooks in different
languages is very beneficial.  *It is great actually.  *

Operating multiple gRPC services in the same processes in Python doesn't
seem to be possible due to how gRPC is wrapped by Arrow Flight.

As an aside, could "Arrow Flight: The Good Parts" be summarized as:

* DoGet, DoExchange, DoPut, and DoAction.
* FlightDescriptor/FlightEndpoint are both reasonable types to use, but
FlightInfo should be avoided.
* Authentication is a call to DoAction and gRPC headers.

Best,

Rusty

Reply via email to