diff --git a/pkg/ingress/apisix_cluster_config.go b/pkg/ingress/apisix_cluster_config.go index 6de1b95ab2..7bed3d461e 100644 --- a/pkg/ingress/apisix_cluster_config.go +++ b/pkg/ingress/apisix_cluster_config.go @@ -190,6 +190,15 @@ func (c *apisixClusterConfigController) handleSyncErr(obj interface{}, err error c.controller.MetricsCollector.IncrSyncOperation("clusterConfig", "success") return } + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync ApisixClusterConfig but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("ApisixClusterConfig", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync ApisixClusterConfig failed, will retry", zap.Any("object", obj), zap.Error(err), diff --git a/pkg/ingress/apisix_consumer.go b/pkg/ingress/apisix_consumer.go index e007c3e89e..edc9b78e41 100644 --- a/pkg/ingress/apisix_consumer.go +++ b/pkg/ingress/apisix_consumer.go @@ -144,6 +144,15 @@ func (c *apisixConsumerController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("consumer", "success") return } + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync ApisixConsumer but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("ApisixConsumer", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync ApisixConsumer failed, will retry", zap.Any("object", obj), zap.Error(err), diff --git a/pkg/ingress/apisix_pluginconfig.go b/pkg/ingress/apisix_pluginconfig.go index be90735ce4..b2e8afa24a 100644 --- a/pkg/ingress/apisix_pluginconfig.go +++ b/pkg/ingress/apisix_pluginconfig.go @@ -190,6 +190,14 @@ func (c *apisixPluginConfigController) sync(ctx context.Context, ev *types.Event func (c *apisixPluginConfigController) handleSyncErr(obj interface{}, errOrigin error) { ev := obj.(*types.Event) event := ev.Object.(kube.ApisixPluginConfigEvent) + if k8serrors.IsNotFound(errOrigin) && ev.Type != types.EventDelete { + log.Infow("sync ApisixPluginConfig but not found, ignore", + zap.String("event_type", ev.Type.String()), + zap.String("ApisixPluginConfig", ev.Object.(kube.ApisixPluginConfigEvent).Key), + ) + c.workqueue.Forget(event) + return + } namespace, name, errLocal := cache.SplitMetaNamespaceKey(event.Key) if errLocal != nil { log.Errorf("invalid resource key: %s", event.Key) diff --git a/pkg/ingress/apisix_route.go b/pkg/ingress/apisix_route.go index 5f62b7684d..aae7fdc505 100644 --- a/pkg/ingress/apisix_route.go +++ b/pkg/ingress/apisix_route.go @@ -261,6 +261,14 @@ func (c *apisixRouteController) checkPluginNameIfNotEmptyV2beta3(ctx context.Con func (c *apisixRouteController) handleSyncErr(obj interface{}, errOrigin error) { ev := obj.(*types.Event) event := ev.Object.(kube.ApisixRouteEvent) + if k8serrors.IsNotFound(errOrigin) && ev.Type != types.EventDelete { + log.Infow("sync ApisixRoute but not found, ignore", + zap.String("event_type", ev.Type.String()), + zap.String("ApisixRoute", ev.Object.(string)), + ) + c.workqueue.Forget(event) + return + } namespace, name, errLocal := cache.SplitMetaNamespaceKey(event.Key) if errLocal != nil { log.Errorf("invalid resource key: %s", event.Key) diff --git a/pkg/ingress/apisix_tls.go b/pkg/ingress/apisix_tls.go index 266ee94fc3..cf08ca2781 100644 --- a/pkg/ingress/apisix_tls.go +++ b/pkg/ingress/apisix_tls.go @@ -175,6 +175,16 @@ func (c *apisixTlsController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("TLS", "success") return } + + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync ApisixTls but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("ApisixTls", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync ApisixTls failed, will retry", zap.Any("object", obj), zap.Error(err), diff --git a/pkg/ingress/apisix_upstream.go b/pkg/ingress/apisix_upstream.go index 835ec648e9..ca8829708f 100644 --- a/pkg/ingress/apisix_upstream.go +++ b/pkg/ingress/apisix_upstream.go @@ -207,6 +207,16 @@ func (c *apisixUpstreamController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("upstream", "success") return } + + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync ApisixUpstream but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("ApisixUpstream", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync ApisixUpstream failed, will retry", zap.Any("object", obj), zap.Error(err), diff --git a/pkg/ingress/endpoint.go b/pkg/ingress/endpoint.go index de5c540fab..9e3ff5d52a 100644 --- a/pkg/ingress/endpoint.go +++ b/pkg/ingress/endpoint.go @@ -101,6 +101,15 @@ func (c *endpointsController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("endpoints", "success") return } + event := obj.(*types.Event) + if errors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync endpoints but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.Any("endpoints", event.Object.(kube.Endpoint)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync endpoints failed, will retry", zap.Any("object", obj), ) diff --git a/pkg/ingress/endpointslice.go b/pkg/ingress/endpointslice.go index 5c4d3b4a3c..1b8d83b97d 100644 --- a/pkg/ingress/endpointslice.go +++ b/pkg/ingress/endpointslice.go @@ -20,6 +20,7 @@ import ( "go.uber.org/zap" discoveryv1 "k8s.io/api/discovery/v1" + k8serrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/client-go/tools/cache" "k8s.io/client-go/util/workqueue" @@ -112,6 +113,15 @@ func (c *endpointSliceController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("endpointSlice", "success") return } + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync endpointSlice but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("endpointSlice", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync endpointSlice failed, will retry", zap.Any("object", obj), ) diff --git a/pkg/ingress/gateway.go b/pkg/ingress/gateway.go index 6f3eefa1c8..3e4ef6a594 100644 --- a/pkg/ingress/gateway.go +++ b/pkg/ingress/gateway.go @@ -125,6 +125,15 @@ func (c *gatewayController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("gateway", "success") return } + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync gateway but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("gateway", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } log.Warnw("sync gateway failed, will retry", zap.Any("object", obj), zap.Error(err), diff --git a/pkg/ingress/ingress.go b/pkg/ingress/ingress.go index f3d650fa75..b489d11a21 100644 --- a/pkg/ingress/ingress.go +++ b/pkg/ingress/ingress.go @@ -190,6 +190,14 @@ func (c *ingressController) sync(ctx context.Context, ev *types.Event) error { func (c *ingressController) handleSyncErr(obj interface{}, err error) { ev := obj.(*types.Event) event := ev.Object.(kube.IngressEvent) + if k8serrors.IsNotFound(err) && ev.Type != types.EventDelete { + log.Infow("sync ingress but not found, ignore", + zap.String("event_type", ev.Type.String()), + zap.String("ingress", event.Key), + ) + c.workqueue.Forget(event) + return + } namespace, name, errLocal := cache.SplitMetaNamespaceKey(event.Key) if errLocal != nil { log.Errorw("invalid resource key", diff --git a/pkg/ingress/secret.go b/pkg/ingress/secret.go index 9eb32c3ec0..85db804c8e 100644 --- a/pkg/ingress/secret.go +++ b/pkg/ingress/secret.go @@ -221,7 +221,16 @@ func (c *secretController) handleSyncErr(obj interface{}, err error) { c.controller.MetricsCollector.IncrSyncOperation("secret", "success") return } - log.Warnw("sync ApisixTls failed, will retry", + event := obj.(*types.Event) + if k8serrors.IsNotFound(err) && event.Type != types.EventDelete { + log.Infow("sync secret but not found, ignore", + zap.String("event_type", event.Type.String()), + zap.String("secret", event.Object.(string)), + ) + c.workqueue.Forget(event) + return + } + log.Warnw("sync secret failed, will retry", zap.Any("object", obj), zap.Error(err), )