The reconcilers for specializers (e.g. ipam-specializer, vlan-specializer, generic-specializer, specializer-reconciler) invoke the KRM function pipeline but explicitly ignore any returned errors.
_, err = r.krmfn.Process(rl)
if err != nil {
log.Error(err, "function run failed")
// TBD if we need to return here + check if kptfile is set
//return ctrl.Result{}, errors.Wrap(err, "function run failed")
}
By returning nil instead of the error, the controller signals to controller-runtime that the reconciliation was completely successful. Consequently, the controller does not requeue the request, and a transient failure (like an IPAM timeout) becomes a permanent, silent corruption. The unspecialized resources are pushed back to Porch.
The reconcilers for specializers (e.g.
ipam-specializer,vlan-specializer,generic-specializer,specializer-reconciler) invoke the KRM function pipeline but explicitly ignore any returned errors.By returning
nilinstead of the error, the controller signals tocontroller-runtimethat the reconciliation was completely successful. Consequently, the controller does not requeue the request, and a transient failure (like an IPAM timeout) becomes a permanent, silent corruption. The unspecialized resources are pushed back to Porch.