@@ -51,9 +51,9 @@ func WithDeleteSession() retryableErrorOption {
5151 }
5252}
5353
54- func RetryableError (msg string , opts ... retryableErrorOption ) error {
54+ func RetryableError (err error , opts ... retryableErrorOption ) error {
5555 re := & errors.RetryableError {
56- Msg : msg ,
56+ Err : err ,
5757 }
5858 for _ , o := range opts {
5959 o (re )
@@ -66,6 +66,7 @@ func RetryableError(msg string, opts ...retryableErrorOption) error {
6666// - deadline was canceled or deadlined
6767// - retry operation returned nil as error
6868// Warning: if deadline without deadline or cancellation func Retry will be worked infinite
69+ // If you need to retry your op func on some logic errors - you must returns from op func RetryableError()
6970func Retry (ctx context.Context , isIdempotentOperation bool , op retryOperation ) (err error ) {
7071 var (
7172 i int
@@ -113,31 +114,31 @@ func Check(err error) (m retryMode) {
113114 switch {
114115 case errors .As (err , & te ):
115116 return retryMode {
116- statusCode : int32 (te .Reason ),
117- operationCompleted : te .Reason .OperationCompleted (),
118- backoff : te .Reason .BackoffType (),
119- deleteSession : te .Reason .MustDeleteSession (),
117+ statusCode : int32 (te .Reason ),
118+ operationStatus : te .Reason .OperationStatus (),
119+ backoff : te .Reason .BackoffType (),
120+ deleteSession : te .Reason .MustDeleteSession (),
120121 }
121122 case errors .As (err , & oe ):
122123 return retryMode {
123- statusCode : int32 (oe .Reason ),
124- operationCompleted : oe .Reason .OperationCompleted (),
125- backoff : oe .Reason .BackoffType (),
126- deleteSession : oe .Reason .MustDeleteSession (),
124+ statusCode : int32 (oe .Reason ),
125+ operationStatus : oe .Reason .OperationStatus (),
126+ backoff : oe .Reason .BackoffType (),
127+ deleteSession : oe .Reason .MustDeleteSession (),
127128 }
128129 case errors .As (err , & re ):
129130 return retryMode {
130- statusCode : - 1 ,
131- operationCompleted : errors .OperationCompletedFalse ,
132- backoff : re .BackoffType ,
133- deleteSession : re .MustDeleteSession ,
131+ statusCode : - 1 ,
132+ operationStatus : errors .OperationNotFinished ,
133+ backoff : re .BackoffType ,
134+ deleteSession : re .MustDeleteSession ,
134135 }
135136 default :
136137 return retryMode {
137- statusCode : - 1 ,
138- operationCompleted : errors .OperationCompletedTrue , // it's finish, not need any retry attempts
139- backoff : errors .BackoffTypeNoBackoff ,
140- deleteSession : false ,
138+ statusCode : - 1 ,
139+ operationStatus : errors .OperationFinished , // it's finish, not need any retry attempts
140+ backoff : errors .BackoffTypeNoBackoff ,
141+ deleteSession : false ,
141142 }
142143 }
143144}
@@ -212,17 +213,17 @@ func max(a, b uint) uint {
212213
213214// retryMode reports whether operation is able retried and with which properties.
214215type retryMode struct {
215- statusCode int32
216- operationCompleted errors.OperationCompleted
217- backoff errors.BackoffType
218- deleteSession bool
216+ statusCode int32
217+ operationStatus errors.OperationStatus
218+ backoff errors.BackoffType
219+ deleteSession bool
219220}
220221
221222func (m retryMode ) MustRetry (isOperationIdempotent bool ) bool {
222- switch m .operationCompleted {
223- case errors .OperationCompletedTrue :
223+ switch m .operationStatus {
224+ case errors .OperationFinished :
224225 return false
225- case errors .OperationCompletedUndefined :
226+ case errors .OperationStatusUndefined :
226227 return isOperationIdempotent
227228 default :
228229 return true
0 commit comments