Even if zeromq did make more sense, we couldn't take it on as a dependency because of non-ASF-compatible licenses
Java zeromq: MPL 2.0 libzmq: GPL On Tue, Feb 12, 2019 at 3:33 PM Jonathan Chiang <chiang...@gmail.com> wrote: > > Would zeromq make more sense than gRPC? > > Thanks, > Jonathan > > > On Feb 12, 2019, at 12:48 PM, Antoine Pitrou <anto...@python.org> wrote: > > > > > > 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 > >> > >>