Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gRPC apps can make resilient API calls with client retry support #5493

Closed
3 tasks done
JamesNK opened this issue Oct 29, 2020 · 9 comments
Closed
3 tasks done

gRPC apps can make resilient API calls with client retry support #5493

JamesNK opened this issue Oct 29, 2020 · 9 comments
Assignees
Labels
bulk-closed Priority:1 Work that is critical for the release, but we could probably ship without User Story A single user-facing feature. Can be grouped under an epic.

Comments

@JamesNK
Copy link
Member

JamesNK commented Oct 29, 2020

Automatically retrying some failed API calls (i.e. connection failure, transient server error) is a common task in apps. Polly is an OSS library often used to support retries with RESTful APIs. Unfortunately Polly doesn't work with gRPC.

There is a gRPC specification for retrying failed calls - https://github.com/grpc/proposal/blob/master/A6-client-retries.md

The spec is implemented by the two first-class gRPC implementations: grpc-go and grpc-java. It is partially implemented by ccore and its related bindings (C++, PHP, Python, C#). There is currently no retry support in grpc-dotnet.

Reasons to do:

  • To maintain feature parity with other first-class gRPC implementations
  • Support apps that need retry functionality to be resilient
  • First-party customer demand

Dev features/work:

@JamesNK JamesNK added the User Story A single user-facing feature. Can be grouped under an epic. label Oct 29, 2020
@JamesNK JamesNK changed the title Resilient gRPC apps with client retry support gRPC apps can make resilient API calls with client retry support Oct 29, 2020
@terrajobst
Copy link
Member

What epic should this be listed under?

@danmoseley
Copy link
Member

@JamesNK any requirements on the client networking stack here?

@JamesNK
Copy link
Member Author

JamesNK commented Nov 4, 2020

What epic should this be listed under?

It was under cloud native. @richlander removed it. What was the reason behind that?

@JamesNK
Copy link
Member Author

JamesNK commented Nov 4, 2020

@JamesNK any requirements on the client networking stack here?

Maybe. I will need to do some investigation then talk to client team

@danmoseley
Copy link
Member

OK, please let us know if there are. cc @karelz

@Pilchie
Copy link
Member

Pilchie commented Nov 16, 2020

@glennc should this be parented somewhere in the Cloud Native Theme?

@marek-safar marek-safar added User Story A single user-facing feature. Can be grouped under an epic. and removed User Story A single user-facing feature. Can be grouped under an epic. labels Nov 27, 2020
@shirhatti shirhatti added the Priority:1 Work that is critical for the release, but we could probably ship without label Jan 21, 2021
@Pilchie
Copy link
Member

Pilchie commented Jan 12, 2022

This is done now, right @JamesNK ?

@JamesNK
Copy link
Member Author

JamesNK commented Jan 12, 2022

Done! https://docs.microsoft.com/en-us/aspnet/core/grpc/retries?view=aspnetcore-6.0

A feature wasn't added in HttpClient, which is why some issues aren't closed, but I worked around it.

@mairaw
Copy link
Contributor

mairaw commented May 26, 2023

Bulk closing .NET 6 epics and user stories. If you think this issue was closed in error, please reopen the issue and update it accordingly.

@mairaw mairaw closed this as completed May 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bulk-closed Priority:1 Work that is critical for the release, but we could probably ship without User Story A single user-facing feature. Can be grouped under an epic.
Projects
None yet
Development

No branches or pull requests

7 participants