prevent negative timeout settings (#482)

* prevent negative timeout settings

* fix misleading comment
master
Kevin Wan 4 years ago committed by GitHub
parent d239952d2d
commit 086113c843
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -14,8 +14,7 @@ type (
Auth bool `json:",optional"` Auth bool `json:",optional"`
Redis redis.RedisKeyConf `json:",optional"` Redis redis.RedisKeyConf `json:",optional"`
StrictControl bool `json:",optional"` StrictControl bool `json:",optional"`
// pending forever is not allowed // setting 0 means no timeout
// never set it to 0, if zero, the underlying will set to 2s automatically
Timeout int64 `json:",default=2000"` Timeout int64 `json:",default=2000"`
CpuThreshold int64 `json:",default=900,range=[0:1000]"` CpuThreshold int64 `json:",default=900,range=[0:1000]"`
} }

@ -11,9 +11,10 @@ import (
func TimeoutInterceptor(timeout time.Duration) grpc.UnaryClientInterceptor { func TimeoutInterceptor(timeout time.Duration) grpc.UnaryClientInterceptor {
return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn,
invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
if timeout == 0 { if timeout <= 0 {
return invoker(ctx, method, req, reply, cc, opts...) return invoker(ctx, method, req, reply, cc, opts...)
} }
ctx, cancel := contextx.ShrinkDeadline(ctx, timeout) ctx, cancel := contextx.ShrinkDeadline(ctx, timeout)
defer cancel() defer cancel()
return invoker(ctx, method, req, reply, cc, opts...) return invoker(ctx, method, req, reply, cc, opts...)

Loading…
Cancel
Save