Skip to content

Provide non blocking getFlightInfo #719

Description

@tanejagagan

Describe the enhancement requested

We have a use case in our production environment where getFlightInfo can take longer than a second and having a blocking getFlightInfo is a problem. Since many other methods in FlightProducer is non blocking we should also have a non blocking getFlightInfo

The code would look something like this with minimum impact to all the implementations

 /**
   * Get information about a particular data stream.
   *
   * @param context Per-call context.
   * @param descriptor The descriptor identifying the data stream.
   * @return Metadata about the stream.
   */
  FlightInfo getFlightInfo(CallContext context, FlightDescriptor descriptor);

  /**
   *  Get information about a particular data stream.
   *  
   * @param context Per-call context.
   * @param descriptor The descriptor identifying the data stream.
   * @param listener An interface for sending data back to the client.
   */
  default void getFlightInfo(CallContext context, FlightDescriptor descriptor, StreamListener<FlightInfo> listener ){
    FlightInfo flightInfo = getFlightInfo(context, descriptor);
    listener.onNext(flightInfo);
    listener.onCompleted();
  }

  /**
   *
   * @return true if blocking (default) version of getFlightInfo needs to be used by FlightService.
   */
  default boolean isBlockingFlightInfo() {
    return true;
  }

Activity

  1. lidavidm commented on Apr 20, 2025

    @lidavidm
    Member

    I'd suggest using gRPC directly (FlightGrpcUtils) to gain access to advanced APIs; I think trying to do more and more wrapping of the gRPC API surface is going to prove ineffective, especially given limited maintainer bandwidth. If there any ways we can make this easier I'd be all ears

  2. tanejagagan commented on Apr 21, 2025

    @tanejagagan
    Author

    I did look at those classes including FlightService as well as FlightBindingService but could not come up with approach without doing to much refactoring to my code base. We have made significant investment in FlightSqlProducer and trying to come up with a solution which would required least bit of refactoring
    Let me look more, I will update the bug later

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions