Thank you David for the prompt response, I will take a look and respond to
them.

Regards,
Keerat

On Wed, Nov 25, 2020 at 11:51 AM David Li <li.david...@gmail.com> wrote:

> Hi Kerrat,
>
> Please see my comments in the doc - I think I commented while this email
> went out. I would prefer to just retry on UNAUTHENTICATED.
>
> Also, with gRPC and especially with streaming calls, you may not get an
> error status right away, as you've found - so there's additional work
> needed to handle that. In our use we've generally assumed that if the
> server will respond with UNAUTHENTICATED, it'll do so before returning any
> data (so there's no need to look for it once the stream starts).
>
> Best,
> David
>
> On Wed, Nov 25, 2020, at 14:39, Keerat Singh wrote:
> > Hey Wes,
> >
> > Renaming it to be more generic like AUTH_EXPIRED sounds good to me,
> updated
> > the design doc.
> > RE: The implementation, while working on the Java POC for this:
> >
> >    - Adding it to the FlightStatusCode
> >    <
> https://github.com/apache/arrow/blob/47b2dd57cdb7098b3c533fb25055df66e1b9c3d0/java/flight/flight-core/src/main/java/org/apache/arrow/flight/FlightStatusCode.java
> >
> >    and CallStatus
> >    <
> https://github.com/apache/arrow/blob/47b2dd57cdb7098b3c533fb25055df66e1b9c3d0/java/flight/flight-core/src/main/java/org/apache/arrow/flight/CallStatus.java
> >
> >    was quite straightforward.
> >    - However, the challenge that I saw was that when an API call like
> >    listFlights returns an Iterable, the underlying FlightServiceGrpc
> method is
> >    not called until we are traversing the iterator in the iterable.
> >    - The exception returned while traversing the iterator is a
> >    StatusRuntimeException [Link]
> >    <
> https://github.com/apache/arrow/blob/47b2dd57cdb7098b3c533fb25055df66e1b9c3d0/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/StatusUtils.java#L216
> >,
> >    which means we don't have the AUTH_EXPIRED Status code unless we add
> the
> >    code to the io.grpc.Status
> >    <
> https://github.com/grpc/grpc-java/blob/master/api/src/main/java/io/grpc/Status.java
> >
> >    class.
> >    @David Do you have any thoughts on this?
> >
> >
> >    - The other alternate I was thinking of was to retry whenever we use
> the
> >    bearer credential header and it returns an UNAUTHENTICATED status
> code.
> >    @David Do you have any thoughts on this?
> >
> > Regards,
> > Keerat
> >
> >
> > On Wed, Nov 25, 2020 at 11:19 AM Wes McKinney <wesmck...@gmail.com>
> wrote:
> >
> > > In principle adding a new error code for this seems reasonable to me.
> > > What do you think about calling it something more generic like
> > > "AUTH_EXPIRED"? I haven't looked at the details of the implementation
> > > -- David Li or others may be able to provide better comments?
> > >
> > > On Fri, Nov 20, 2020 at 6:23 PM Keerat Singh <keer...@bitquilltech.com
> >
> > > wrote:
> > > >
> > > > I would like to propose the following enhancement to retry the failed
> > > > Flight API call and refresh the access token on encountering
> > > > FlightStatusCode.TOKEN_EXPIRED.
> > > > For example when using an implementation of CallHeaderAuthenticator
> > > > <
> > >
> https://github.com/apache/arrow/blob/master/java/flight/flight-core/src/main/java/org/apache/arrow/flight/auth2/CallHeaderAuthenticator.java
> > > >
> > > > such as BearerTokenAuthenticator
> > > > <
> > >
> https://github.com/apache/arrow/blob/master/java/flight/flight-core/src/main/java/org/apache/arrow/flight/auth2/BearerTokenAuthenticator.java
> > > >
> > > > and the generated access token expires and FlightClient needs to
> detect
> > > > that and retry the failed API call, along with the retry it needs to
> > > > refresh the expired access token rather than having each client
> > > application
> > > > write their own custom code with retry logic around this token
> expired
> > > > workflow.
> > > >
> > > > More Details:
> > > >
> > > >    - Arrow JIRA: https://issues.apache.org/jira/browse/ARROW-10671
> > > >    - Design Proposal:
> > > >
> > >
> https://docs.google.com/document/d/187DlGpIpOUPGhWvXVQEq0mXw_hdWjzzOuZp0p5qzBp0/edit?usp=sharing
> > > >
> > > > Regards,
> > > > Keerat
> > >
> >
>

Reply via email to