Hi David,

I think allowing to send application-specific ancillary data in addition
to Arrow data makes sense.

(I'm also wondering whether the choice of gRPC is appropriate at all -
the current C++ hacks around "zero-copy" are not pretty and they may not
translate to other languages either)

Regards

Antoine.


Le 12/02/2019 à 21:44, David Ming Li a écrit :
> Hi all,
> 
> 
> 
> We've been evaluating Flight for our use, and we're wondering if the protocol 
> is still open to extensions, as having a few application-defined metadata 
> fields would help our use cases a lot.
> 
> 
> 
> (Apologies if this is a repost - was having issue with the spam filter.)
> 
> 
> 
> Specifically, in DoGet, having a metadata binary blob in the server->client 
> messages would help implement resumable requests, especially as we have 
> non-monotonically-indexed data streams. This would also help us reuse 
> server-side state if we do have to resume a stream.
> 
> 
> 
> In DoPut, we think making this call bidirectional would be useful to support 
> application-level ACKs, again to implement resumable uploads. The server 
> would thus have the option to send back an application-defined binary blob at 
> any point during an upload. This is less important, as you could imagine 
> starting a plain gRPC server-streaming call alongside the Flight DoPut call 
> to do the same. But as you can't bind a gRPC and Flight service on the same 
> port/channel, this is somewhat inconvenient.
> 
> 
> 
> That leads me to the API-level niggles we have; it would be nice to be able 
> to bind gRPC services alongside a Flight service, and conversely be able to 
> reuse a gRPC channel across gRPC and Flight clients, though breaking the 
> hiding of gRPC isn't desirable.
> 
> 
> 
> Meanwhile, it would be nice to wrap the gRPC server 'awaitTermination' 
> methods, so that we don't have to busy-wait ourselves (as in Java) or have 
> the option to not busy-wait taken away from us (as in C++). In particular, 
> when investigating Python bindings to C++ [0], the fact that 
> FlightServerBase::Run also calls grpc::Server::Wait for you means that Ctrl-C 
> no longer works in Python.
> 
> 
> 
> Does what we're trying to accomplish make sense? Are there better ways to 
> achieve resumable uploads/downloads in the current protocol?
> 
> 
> 
> [0]: https://github.com/apache/arrow/pull/3566
> 
> 
> 
> Thanks,
> 
> David
> 
> 

Reply via email to