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

Ading grpc-timeout support #107

Closed
mwitkow opened this issue Feb 9, 2016 · 3 comments
Closed

Ading grpc-timeout support #107

mwitkow opened this issue Feb 9, 2016 · 3 comments

Comments

@mwitkow
Copy link
Member

mwitkow commented Feb 9, 2016

First off: gRPC Gateway is awesome. We've been using it in Prod since time immortal.

We're currently adding gRPC timeouts throughout our stack, to make sure that hanging connections don't happen. grpc-timeout is a first class citizen in all gRPC implementations (see http://www.grpc.io/docs/guides/wire.html), and in case of gRPC-Go it is propagated using the context.Deadline in the gRPC client.

We tries enabling deadliens by passing a context.WithTimeout through RegisterMyFooServiceHandler, but unfortunately this lead to all our REST-originating gRPC requests to timeout immediately. That's because context.WithTimeout is implemented through context.WithDeadline from time.Now() of the server initialization :(

Unfortunately gRPC ClientConn doesn't support default context timeouts, so we want to work around it as follows:

We'd be happy to send in a patch that would:

  • in runtime.AnnotateContext extract a header Grpc-Timeout and set it into the context.WithTimeout
  • in absense of the Grpc-Timeout header, it'd use a static variable that controls the timeout runtime.DefaultTimeout = 0 (similar to runtime.HTTPError), which by default would disable the behaviour

What do you think? We're happy to provide this as a PR :)

@yugui
Copy link
Member

yugui commented Feb 16, 2016

Sounds reasonable. I love to see the PR.

@yugui
Copy link
Member

yugui commented Jul 11, 2016

Done with #155

@yugui yugui closed this as completed Jul 11, 2016
@sknaumov
Copy link

I think it would be useful to have different defaults for stream vs regular requests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants