Skip to content
4 changes: 3 additions & 1 deletion internal/provider/kubernetes/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,9 @@ func isTransientError(err error) bool {
kerrors.IsServiceUnavailable(err) ||
kerrors.IsStoreReadError(err) ||
kerrors.IsInternalError(err) ||
kerrors.IsUnexpectedServerError(err)
kerrors.IsUnexpectedServerError(err) ||
errors.Is(err, context.Canceled) ||
errors.Is(err, context.DeadlineExceeded)
}

// Reconcile handles reconciling all resources in a single call. Any resource event should enqueue the
Expand Down
10 changes: 10 additions & 0 deletions internal/provider/kubernetes/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1603,6 +1603,12 @@ func TestIsTransientError(t *testing.T) {
serviceUnavailableErr := kerrors.NewServiceUnavailable("service unavailable")
badRequestErr := kerrors.NewBadRequest("bad request")

// new test errors for context
canceledErr := context.Canceled
deadlineExceededErr := context.DeadlineExceeded
wrappedCanceledErr := fmt.Errorf("wrapped: %w", context.Canceled)
wrappedDeadlineExceededErr := fmt.Errorf("wrapped: %w", context.DeadlineExceeded)

testCases := []struct {
name string
err error
Expand All @@ -1614,6 +1620,10 @@ func TestIsTransientError(t *testing.T) {
{"ServiceUnavailable", serviceUnavailableErr, true},
{"BadRequest", badRequestErr, false},
{"NilError", nil, false},
{"ContextCanceled", canceledErr, true},
{"ContextDeadlineExceeded", deadlineExceededErr, true},
{"WrappedContextCanceled", wrappedCanceledErr, true},
{"WrappedContextDeadlineExceeded", wrappedDeadlineExceededErr, true},
}

for _, tc := range testCases {
Expand Down
12 changes: 6 additions & 6 deletions internal/provider/kubernetes/filters.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import (
"context"
"fmt"

Check failure on line 10 in internal/provider/kubernetes/filters.go

View workflow job for this annotation

GitHub Actions / lint

"fmt" imported and not used (typecheck)

Check failure on line 10 in internal/provider/kubernetes/filters.go

View workflow job for this annotation

GitHub Actions / coverage-test

"fmt" imported and not used

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
Expand All @@ -24,8 +24,8 @@
uExtResourceList := &unstructured.UnstructuredList{}
uExtResourceList.SetGroupVersionKind(gvk)
if err := r.client.List(ctx, uExtResourceList); err != nil {
r.log.Info("no associated resources found for %s", gvk.String())
Comment thread
TomerJLevy marked this conversation as resolved.
Outdated
return nil, fmt.Errorf("failed to list %s: %w", gvk.String(), err)
Comment thread
zhaohuabing marked this conversation as resolved.
r.log.Info("no associated resources found", "GVK", gvk.String())
return nil, err
}

uExtResources := uExtResourceList.Items
Expand Down Expand Up @@ -57,8 +57,8 @@
uExtResourceList := &unstructured.UnstructuredList{}
uExtResourceList.SetGroupVersionKind(gvk)
if err := r.client.List(ctx, uExtResourceList); err != nil {
r.log.Info("no associated backend resources found for %s", gvk.String())
Comment thread
TomerJLevy marked this conversation as resolved.
Outdated
return nil, fmt.Errorf("failed to list %s: %w", gvk.String(), err)
r.log.Info("no associated backend resources found", "GVK", gvk.String())
return nil, err
}

uExtResources := uExtResourceList.Items
Expand Down Expand Up @@ -86,7 +86,8 @@
func (r *gatewayAPIReconciler) getHTTPRouteFilter(ctx context.Context, name, namespace string) (*egv1a1.HTTPRouteFilter, error) {
hrf := new(egv1a1.HTTPRouteFilter)
if err := r.client.Get(ctx, types.NamespacedName{Namespace: namespace, Name: name}, hrf); err != nil {
return nil, fmt.Errorf("failed to get HTTPRouteFilter: %w", err)
r.log.Info("failed to get HTTPRouteFilter", "name", name, "namespace", namespace)
return nil, err
}
return hrf, nil
}
Expand Down Expand Up @@ -122,7 +123,6 @@
resourceMap.allAssociatedConfigMaps.Insert(utils.NamespacedName(configMap).String())
resourceTree.ConfigMaps = append(resourceTree.ConfigMaps, configMap)
r.log.Info("processing ConfigMap", "namespace", filter.Namespace, "name", string(filter.Spec.DirectResponse.Body.ValueRef.Name))

}
}
}
Expand Down
3 changes: 2 additions & 1 deletion release-notes/current.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ new features: |

bug fixes: |
Fixed %ROUTE_KIND% operator to be lower-cased when used by clusterStatName in EnvoyProxy API.
Fixed maxAcceptPerSocketEvent being ignored in ClientTrafficPolicy
Fixed maxAcceptPerSocketEvent being ignored in ClientTrafficPolicy.
Fixed the topologyInjectorDisabled and the local cluster was not defined.
Fixed handling of context-related transient errors to prevent incorrect state reconciliation and unintended behavior.

# Enhancements that improve performance.
performance improvements: |
Expand Down
Loading