Adjusting arguments and return value of retry function and adding new retry logic to stream
This commit is contained in:
		| @@ -1,8 +1,10 @@ | |||||||
| package client | package client | ||||||
|  |  | ||||||
| type RetryFunc func(err error) bool | import "context" | ||||||
|  |  | ||||||
|  | type RetryFunc func(ctx context.Context, req Request, retryCount int, err error) (bool, error) | ||||||
|  |  | ||||||
| // always retry on error | // always retry on error | ||||||
| func alwaysRetry(err error) bool { | func alwaysRetry(ctx context.Context, req Request, retryCount int, err error) (bool, error) { | ||||||
| 	return true | 	return true, err | ||||||
| } | } | ||||||
|   | |||||||
| @@ -300,7 +300,7 @@ func (r *rpcClient) Call(ctx context.Context, request Request, response interfac | |||||||
| 				return nil | 				return nil | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			if !callOpts.Retry(err) { | 			if retry, err := callOpts.Retry(ctx, request, i, err); !retry { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -405,7 +405,12 @@ func (r *rpcClient) Stream(ctx context.Context, request Request, opts ...CallOpt | |||||||
| 			if rsp.err == nil { | 			if rsp.err == nil { | ||||||
| 				return rsp.stream, nil | 				return rsp.stream, nil | ||||||
| 			} | 			} | ||||||
| 			grr = rsp.err |  | ||||||
|  | 			if retry, err := callOpts.Retry(ctx, request, i, rsp.err); !retry { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			grr = err | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user