in pkg/providers/apisix/apisix_global_rule.go [181:249]
func (c *apisixGlobalRuleController) handleSyncErr(obj interface{}, errOrigin error) {
if errOrigin == nil {
c.MetricsCollector.IncrSyncOperation("GlobalRule", "success")
c.workqueue.Forget(obj)
} else {
c.workqueue.AddRateLimited(obj)
c.MetricsCollector.IncrSyncOperation("GlobalRule", "failure")
}
ev := obj.(*types.Event)
event := ev.Object.(kube.ApisixGlobalRuleEvent)
if k8serrors.IsNotFound(errOrigin) && ev.Type != types.EventDelete {
log.Infow("sync ApisixGlobalRule but not found, ignore",
zap.String("event_type", ev.Type.String()),
zap.String("ApisixGlobalRule", ev.Object.(kube.ApisixGlobalRuleEvent).Key),
)
c.workqueue.Forget(event)
return
}
if !c.Kubernetes.DisableStatusUpdates && c.Elector.IsLeader() {
namespace, name, errLocal := cache.SplitMetaNamespaceKey(event.Key)
if errLocal != nil {
log.Errorf("invalid resource key: %s", event.Key)
c.MetricsCollector.IncrSyncOperation("GlobalRule", "failure")
return
}
var agr kube.ApisixGlobalRule
switch event.GroupVersion {
case config.ApisixV2:
agr, errLocal = c.ApisixGlobalRuleLister.V2(namespace, name)
default:
errLocal = fmt.Errorf("unsupported ApisixGlobalRule group version %s", event.GroupVersion)
}
if errOrigin == nil {
if ev.Type != types.EventDelete {
if errLocal == nil {
switch agr.GroupVersion() {
case config.ApisixV2:
c.RecordEvent(agr.V2(), v1.EventTypeNormal, utils.ResourceSynced, nil)
c.recordStatus(agr.V2(), utils.ResourceSynced, nil, metav1.ConditionTrue, agr.GetGeneration())
}
} else {
log.Errorw("failed list ApisixGlobalRule",
zap.Error(errLocal),
zap.String("name", name),
zap.String("namespace", namespace),
)
}
}
return
}
log.Warnw("sync ApisixGlobalRule failed, will retry",
zap.Any("object", obj),
zap.Error(errOrigin),
)
if errLocal == nil {
switch agr.GroupVersion() {
case config.ApisixV2:
c.RecordEvent(agr.V2(), v1.EventTypeWarning, utils.ResourceSyncAborted, errOrigin)
c.recordStatus(agr.V2(), utils.ResourceSyncAborted, errOrigin, metav1.ConditionFalse, agr.GetGeneration())
}
} else {
log.Errorw("failed list ApisixGlobalRule",
zap.Error(errLocal),
zap.String("name", name),
zap.String("namespace", namespace),
)
}
}
}