prevent negative timeout settings (#482)
* prevent negative timeout settings * fix misleading comment
This commit is contained in:
@@ -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...)
|
||||||
|
|||||||
Reference in New Issue
Block a user