Skip to content

Commit a8d5ec1

Browse files
committed
fix: treat rate limiter deadline as context deadline
1 parent 0b156cb commit a8d5ec1

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

pkg/kstatus/polling/statusreaders/common.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ func errResourceToResourceStatus(err error, resource *unstructured.Unstructured,
167167
// If the error is from the context, we don't attach that to the ResourceStatus,
168168
// but just return it directly so the caller can decide how to handle this
169169
// situation.
170-
if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) {
170+
if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) || errWouldExceedContextDeadline(err) {
171171
return nil, err
172172
}
173173
identifier := object.UnstructuredToObjMetadata(resource)
@@ -193,7 +193,7 @@ func errIdentifierToResourceStatus(err error, identifier object.ObjMetadata) (*e
193193
// If the error is from the context, we don't attach that to the ResourceStatus,
194194
// but just return it directly so the caller can decide how to handle this
195195
// situation.
196-
if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) {
196+
if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) || errWouldExceedContextDeadline(err) {
197197
return nil, err
198198
}
199199
if apierrors.IsNotFound(err) {
@@ -209,3 +209,10 @@ func errIdentifierToResourceStatus(err error, identifier object.ObjMetadata) (*e
209209
Error: err,
210210
}, nil
211211
}
212+
213+
func errWouldExceedContextDeadline(err error) bool {
214+
if e := errors.Unwrap(err); e != nil {
215+
return e.Error() == "rate: Wait(n=1) would exceed context deadline"
216+
}
217+
return false
218+
}

0 commit comments

Comments
 (0)